小眾實用的Python 爬蟲庫RoboBrowser
大家好,我是安果!
今天推薦一款小眾輕量級的爬蟲庫: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 sleepfrom robobrowser import RoboBrowserhome_url = ’https://baidu.com’# parser: 解析器,HTML parser; used by BeautifulSoup# 官方推薦:lxmlrb = 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 等
以上就是Python 爬蟲庫RoboBrowser的使用簡介的詳細內容,更多關于Python 爬蟲庫RoboBrowser的資料請關注好吧啦網其它相關文章!
相關文章: