乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python接口自動(dòng)化28-requests-html爬蟲框架

       上海悠悠 2021-05-27

      前言

      requests庫(kù)的好,只有用過(guò)的人才知道,最近這個(gè)庫(kù)的作者又出了一個(gè)好用的爬蟲框架requests-html。之前解析html頁(yè)面用過(guò)了lxml和bs4,
      requests-html集成了一些常用爬蟲庫(kù)的優(yōu)點(diǎn),依然是為人類服務(wù):HTML Parsing for Humans。
      目前只支持python3.6

      環(huán)境準(zhǔn)備

      requests-html的GitHub地址https://github.com/kennethreitz/requests-html,使用pip就能直接安裝了。

      pip install requests-html

      該庫(kù)旨在使解析HTML(例如,抓取Web)盡可能簡(jiǎn)單直觀, 有以下優(yōu)勢(shì):

      • 完整的JavaScript支持!

      • CSS Selectors(又名jQuery風(fēng)格,感謝PyQuery)。

      • XPath Selectors,對(duì)于膽小的人來(lái)說(shuō)。

      • 模擬用戶代理(如真實(shí)的Web瀏覽器)。

      • 自動(dòng)跟蹤重定向。

      • 連接池和cookie持久性。

      • 令人欣喜的請(qǐng)求體驗(yàn),具有神奇的解析能力。

      • 異步支持

      抓頁(yè)面url地址

      先發(fā)個(gè)get請(qǐng)求,返回response對(duì)象,通過(guò)r.html.links獲取頁(yè)面的全部鏈接,包含一些相對(duì)路徑的地址,如果只想獲取絕對(duì)路徑的地址,可以用r.html.absolute_links

      from requests_html import HTMLSession
      session = HTMLSession()

      r = session.get('https:///')

      # 獲取頁(yè)面上的所有鏈接
      all_links = r.html.links
      print(all_links)

      # 絕對(duì)路徑鏈接
      all_absolute_links = r.html.absolute_links
      print(all_absolute_links)

      運(yùn)行結(jié)果, 返回內(nèi)容太多,省略了一部分:

      {'http://pycon./', '/community/', 'http:///dev/peps/', '/events/python-events/831/', , 'http://www.'}
      {'http://pycon./', 'https://www./dev/', 'https://wiki./PySide', 'https://www./events/python-events/817/'}

      從返回的結(jié)果可以看出,返回的是set集合,會(huì)自動(dòng)的去除重復(fù)的鏈接地址

      xpath定位

      用過(guò)lxml庫(kù)的小伙伴應(yīng)該知道https://www.cnblogs.com/yoyoketang/p/9661273.html,lxml可以支持xpath查找元素對(duì)象,requests-html也可以完美的支持xpath

      接下來(lái)我需要獲取目標(biāo)網(wǎng)站:https://www.cnblogs.com/yoyoketang/tag/django/, 獲取所有的文章標(biāo)題,xpath語(yǔ)法:.//*[@id=’myposts’]/div/div/a

      參考代碼

      from requests_html import HTMLSession
      session = HTMLSession()

      r = session.get('https://www.cnblogs.com/yoyoketang/tag/django/')
      # 只獲取第一個(gè)
      f = r.html.xpath(".//*[@id='myposts']/div/div/a", first=True).text
      print(f)

      # 獲取全部
      all = r.html.xpath(".//*[@id='myposts']/div/div/a")
      for i in all:
      print(i.text) # 獲取文本
      print(i.absolute_links) # 獲取鏈接

      運(yùn)行結(jié)果

      python測(cè)試開發(fā)django-49.allow_tags和mark_safe
      python測(cè)試開發(fā)django-49.allow_tags和mark_safe
      {'https://www.cnblogs.com/yoyoketang/p/10659137.html'}
      python測(cè)試開發(fā)django-48.xadmin上傳圖片django-stdimage
      {'https://www.cnblogs.com/yoyoketang/p/10655601.html'}
      python測(cè)試開發(fā)django-47.xadmin上傳圖片和文件
      {'https://www.cnblogs.com/yoyoketang/p/10653878.html'}

      xpath方法返回是一個(gè)list,加上 first=True參數(shù)返回第一個(gè)結(jié)果

      css定位支持

      requests-html同樣支持CSS Selector的方法,把上面案例用css定位也可以實(shí)現(xiàn)同樣效果

      from requests_html import HTMLSession
      session = HTMLSession()

      r = session.get('https://www.cnblogs.com/yoyoketang/tag/django/')
      # 只獲取第一個(gè) css語(yǔ)法
      f = r.html.find(".PostList>div>a", first=True).text
      print(f)

      # 獲取全部 css語(yǔ)法
      all = r.html.find(".PostList>div>a")
      for i in all:
      print(i.text) # 獲取文本
      print(i.absolute_links) # 獲取鏈接

      其它方法

      from requests_html import HTMLSession
      session = HTMLSession()

      r = session.get('https://www.cnblogs.com/yoyoketang/tag/django/')

      about = r.html.find(".PostList>div", first=True)

      # 1.獲取文本
      print(about.text)

      # 2.獲取html內(nèi)容
      print(about.html)

      # 3.獲取全部屬性
      print(about.attrs)

      # 4.獲取鏈接
      print(about.absolute_links )

      # 5.搜索文字
      print(about.search('python測(cè)試開發(fā){}和mark_safe')[0])

      # 6.繼續(xù)定位子元素
      print(about.find('a')) # 返回list element對(duì)象

      # 7.containing 模糊匹配 只包含'django'文本的對(duì)象
      a = about.find('a', containing='django')
      print(a)

      運(yùn)行結(jié)果

      python測(cè)試開發(fā)django-49.allow_tags和mark_safe
      <div class="postTitl2"><a id="PostsList1_rpPosts_TitleUrl_0">python測(cè)試開發(fā)django-49.allow_tags和mark_safe</a></div>
      {'class': ('postTitl2',)}
      {'https://www.cnblogs.com/yoyoketang/p/10659137.html'}
      django-49.allow_tags
      [<Element 'a' id='PostsList1_rpPosts_TitleUrl_0'>]
      [<Element 'a' id='PostsList1_rpPosts_TitleUrl_0'>]

      這些只是一些基本的功能,requests-html還可以支持JavaScript渲染頁(yè)面,看下一篇python接口自動(dòng)化29-requests-html支持JavaScript渲染頁(yè)面

      2019年《python3接口自動(dòng)化》課程3月17-4月14開課
      主講老師:上海-悠悠
      上課方式:QQ群視頻在線教學(xué)
      上課時(shí)間:每周六、周日晚上20:30-22:30
      報(bào)名費(fèi):1000

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多