<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          推薦一款小眾且好用的 Python 爬蟲(chóng)庫(kù)

          共 2917字,需瀏覽 6分鐘

           ·

          2021-03-11 22:28


          點(diǎn)擊上方“AirPython”,選擇“加為星標(biāo)

          第一時(shí)間關(guān)注 Python 原創(chuàng)干貨!


          1. 前言

          大家好,我是安果!

          今天推薦一款小眾輕量級(jí)的爬蟲(chóng)庫(kù):RoboBrowser

          RoboBrowser,Your friendly neighborhood web scraper!由純 Python 編寫(xiě),運(yùn)行無(wú)需獨(dú)立的瀏覽器,它不僅可以做爬蟲(chóng),還可以實(shí)現(xiàn) Web 端的自動(dòng)化

          項(xiàng)目地址:

          https://github.com/jmcarp/robobrowser

          2. 安裝及用法

          在實(shí)戰(zhàn)之前,我們先安裝依賴(lài)庫(kù)及解析器

          PS:官方推薦的解析器是 「lxml」

          # 安裝依賴(lài)
          pip3 install robobrowser

          # lxml解析器(官方推薦)
          pip3 install lxml

          RoboBrowser 常見(jiàn)的 2 個(gè)功能為:

          • 模擬表單 Form 提交

          • 網(wǎng)頁(yè)數(shù)據(jù)爬取

          使用 RoboBrowser 進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)爬取,常見(jiàn)的 3 個(gè)方法如下:

          • find

            查詢(xún)當(dāng)前頁(yè)面滿(mǎn)足條件的第一個(gè)元素

          • find_all

            查詢(xún)當(dāng)前頁(yè)面擁有共同屬性的一個(gè)列表元素

          • select

            通過(guò) CSS 選擇器,查詢(xún)頁(yè)面,返回一個(gè)元素列表

          需要指出的是,RoboBrowser 依賴(lài)于 BS4,所以它的使用方法和 BS4 類(lèi)似

          更多功能可以參考:

          https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

          3. 實(shí)戰(zhàn)一下

          我們以「 百度搜索及爬取搜索結(jié)果列表 」為例

          3-1  打開(kāi)目標(biāo)網(wǎng)站

          首先,我們實(shí)例化一個(gè) RoboBrowser 對(duì)象

          from time import sleep

          from robobrowser import RoboBrowser

          home_url = 'https://baidu.com'

          #  parser: 解析器,HTML parser; used by BeautifulSoup
          #  官方推薦:lxml
          rb = RoboBrowser(history=True, parser='lxml')

          # 打開(kāi)目標(biāo)網(wǎng)站
          rb.open(home_url)

          然后,使用 RoboBrowser 實(shí)例對(duì)象中的 open() 方法打開(kāi)目標(biāo)網(wǎng)站

          3-2  自動(dòng)化表單提交

          首先,使用 RoboBrowser 實(shí)例對(duì)象獲取網(wǎng)頁(yè)中的表單 Form

          然后,通過(guò)為表單中的輸入框賦值模擬輸入操作

          最后,使用 submit_form() 方法進(jìn)行表單提交,模擬一次搜索操作

          # 獲取表單對(duì)象
          bd_form = rb.get_form()

          print(bd_form)

          bd_form['wd'].value = "AirPython"

          # 提交表單,模擬一次搜索
          rb.submit_form(bd_form)

          3-3  數(shù)據(jù)爬取

          分析搜索頁(yè)面的網(wǎng)頁(yè)結(jié)構(gòu),利用 RoboBrowser 中的 select() 方法匹配出所有的搜索列表元素

          遍歷搜索列表元素,使用 find() 方法查詢(xún)出每一項(xiàng)的標(biāo)題及 href 鏈接地址

          # 查看結(jié)果
          result_elements = rb.select(".result")

          # 搜索結(jié)果
          search_result = []

          # 第一項(xiàng)的鏈接地址
          first_href = ''

          for index, element in enumerate(result_elements):
              title = element.find("a").text
              href = element.find("a")['href']
              search_result.append(title)

              if index == 0:
                  first_href = element.find("a")
                  print('第一項(xiàng)地址為:', href)

          print(search_result)

          最后,使用 RoboBrowser 中的 follow_link() 方法模擬一下「點(diǎn)擊鏈接,查看網(wǎng)頁(yè)詳情」的操作

          # 跳轉(zhuǎn)到第一個(gè)鏈接
          rb.follow_link(first_href)

          # 獲取歷史
          print(rb.url)

          需要注意的是,follow_link() 方法的參數(shù)為帶有 href 值的 a 標(biāo)簽

          4. 最后

          文中結(jié)合百度搜索實(shí)例,使用 RoboBrowser 完成了一次自動(dòng)化及爬蟲(chóng)操作

          相比 Selenium、Helium 等,RoboBrowser 更輕量級(jí),不依賴(lài)獨(dú)立的瀏覽器驅(qū)動(dòng)

          如果想處理一些簡(jiǎn)單的爬蟲(chóng)或 Web 自動(dòng)化,RoboBrowser 完全夠用;但是面對(duì)一些復(fù)雜的自動(dòng)化場(chǎng)景,更建議使用 Selenium、Pyppeteer、Helium 等

          我已經(jīng)將文中完整源碼文件傳到后臺(tái),關(guān)注公眾號(hào),后臺(tái)回復(fù)「 rb 」即可獲得

          如果你覺(jué)得文章還不錯(cuò),請(qǐng)大家 點(diǎn)贊、分享、留言 下,因?yàn)檫@將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力!


          留言送書(shū)

          本周贈(zèng)書(shū):《從零開(kāi)始學(xué)Selenium自動(dòng)化
          介紹:基于 Python 語(yǔ)言,系統(tǒng)地介紹了 Selenium 自動(dòng)化測(cè)試的相關(guān)知識(shí)及應(yīng)用。書(shū)中的大部分知識(shí)點(diǎn)都匹配了可獨(dú)立運(yùn)行的典型實(shí)例,便于讀者學(xué)習(xí)與實(shí)踐。另外,為了幫助讀者更加高效、直觀地學(xué)習(xí),本書(shū)特意提供了約 10 小時(shí)基礎(chǔ)操作配套教學(xué)視頻。相信讀者通過(guò)系統(tǒng)地學(xué)習(xí)本書(shū)內(nèi)容,可以全面掌握Selenium 3 自動(dòng)化測(cè)試技術(shù)


          PS:中獎(jiǎng)名單將在交流群公布,可以?huà)呙枭厦娑S碼,備注【交流群】,加入技術(shù)交流群!



          ??分享、點(diǎn)贊、在看,給個(gè)三連擊唄!
          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  a v高清视频在线观看 | 久久婷婷五月天综合 | 久久婷综合 | 丰满老妇高潮一级A片 | 一级黄色录像视频 |