1. 程式人生 > >推薦一款小眾且好用的 Python 爬蟲庫 - RoboBrowser

推薦一款小眾且好用的 Python 爬蟲庫 - RoboBrowser

![image](https://upload-images.jianshu.io/upload_images/1466987-94c5fc4436b28846?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 1\. 前言 大家好,我是安果! 今天推薦一款小眾輕量級的爬蟲庫:RoboBrowser RoboBrowser,Your friendly neighborhood web scraper!由純 Python 編寫,執行無需獨立的瀏覽器,它不僅可以做爬蟲,還可以實現 Web 端的自動化 專案地址: ​https://github.com/jmcarp/robobrowser ## 2\. 安裝及用法 在實戰之前,我們先安裝依賴庫及解析器 PS:官方推薦的解析器是 「lxml」 ``` # 安裝依賴 pip3 install robobrowser # lxml解析器(官方推薦) pip3 install lxml ``` RoboBrowser 常見的 2 個功能為: * 模擬表單 Form 提交 * 網頁資料爬取 使用 RoboBrowser 進行網頁資料爬取,常見的 3 個方法如下: * find 查詢當前頁面滿足條件的第一個元素 * find_all 查詢當前頁面擁有共同屬性的一個列表元素 * select 通過 CSS 選擇器,查詢頁面,返回一個元素列表 需要指出的是,RoboBrowser 依賴於 BS4,所以它的使用方法和 BS4 類似 更多功能可以參考: https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ ## 3\. 實戰一下 我們以「 百度搜索及爬取搜尋結果列表 」為例 3-1  開啟目標網站 首先,我們例項化一個 RoboBrowser 物件 ``` 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') # 開啟目標網站 rb.open(home_url) ``` 然後,使用 RoboBrowser 例項物件中的 open() 方法開啟目標網站 3-2  自動化表單提交 首先,使用 RoboBrowser 例項物件獲取網頁中的表單 Form 然後,通過為表單中的輸入框賦值模擬輸入操作 最後,使用 submit_form() 方法進行表單提交,模擬一次搜尋操作 ``` # 獲取表單物件 bd_form = rb.get_form() print(bd_form) bd_form['wd'].value = "AirPython" # 提交表單,模擬一次搜尋 rb.submit_form(bd_form) ``` 3-3  資料爬取 分析搜尋頁面的網頁結構,利用 RoboBrowser 中的 select() 方法匹配出所有的搜尋列表元素 遍歷搜尋列表元素,使用 find() 方法查詢出每一項的標題及 href 連結地址 ``` # 檢視結果 result_elements = rb.select(".result") # 搜尋結果 search_result = [] # 第一項的連結地址 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('第一項地址為:', href) print(search_result) ``` 最後,使用 RoboBrowser 中的 follow_link() 方法模擬一下「點選連結,檢視網頁詳情」的操作 ``` # 跳轉到第一個連結 rb.follow_link(first_href) # 獲取歷史 print(rb.url) ``` 需要注意的是,follow_link() 方法的引數為帶有 href 值的 a 標籤 ## 4\. 最後 文中結合百度搜索例項,使用 RoboBrowser 完成了一次自動化及爬蟲操作 相比 Selenium、Helium 等,RoboBrowser 更輕量級,不依賴獨立的瀏覽器及驅動 如果想處理一些簡單的爬蟲或 Web 自動化,RoboBrowser 完全夠用;但是面對一些複雜的自動化場景,更建議使用 Selenium、Pyppeteer、Helium 等 我已經將文中完整原始碼檔案傳到後臺,關注公眾號「 **AirPython** 」,後臺回覆「 **rb** 」即可獲得 如果你覺得文章還不錯,請大家 **點贊、分享、留言** 下,因為這將是我持續輸出更多優質文章的最強