小眾實(shí)用的Python 爬蟲庫(kù)RoboBrowser
1. 前言
大家好,我是安果!
今天推薦一款小眾輕量級(jí)的爬蟲庫(kù):RoboBrowser
RoboBrowser,Your friendly neighborhood web scraper!由純 Python 編寫,運(yùn)行無(wú)需獨(dú)立的瀏覽器,它不僅可以做爬蟲,還可以實(shí)現(xiàn) Web 端的自動(dòng)化
項(xiàng)目地址:
https://github.com/jmcarp/robobrowser
2. 安裝及用法
在實(shí)戰(zhàn)之前,我們先安裝依賴庫(kù)及解析器
PS:官方推薦的解析器是 「lxml」
# 安裝依賴 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
查詢當(dāng)前頁(yè)面滿足條件的第一個(gè)元素
- find_all
查詢當(dāng)前頁(yè)面擁有共同屬性的一個(gè)列表元素
- select
通過(guò) CSS 選擇器,查詢頁(yè)面,返回一個(gè)元素列表
需要指出的是,RoboBrowser 依賴于 BS4,所以它的使用方法和 BS4 類似
更多功能可以參考:
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() 方法查詢出每一項(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)化及爬蟲操作
相比 Selenium、Helium 等,RoboBrowser 更輕量級(jí),不依賴獨(dú)立的瀏覽器及驅(qū)動(dòng)
如果想處理一些簡(jiǎn)單的爬蟲或 Web 自動(dòng)化,RoboBrowser 完全夠用;但是面對(duì)一些復(fù)雜的自動(dòng)化場(chǎng)景,更建議使用 Selenium、Pyppeteer、Helium 等
以上就是Python 爬蟲庫(kù)RoboBrowser的使用簡(jiǎn)介的詳細(xì)內(nèi)容,更多關(guān)于Python 爬蟲庫(kù)RoboBrowser的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python用requests-html爬取網(wǎng)頁(yè)的實(shí)現(xiàn)
- python爬蟲 requests-html的使用
- Python爬蟲工具requests-html使用解析
- python爬蟲開(kāi)發(fā)之使用Python爬蟲庫(kù)requests多線程抓取貓眼電影TOP100實(shí)例
- python爬蟲開(kāi)發(fā)之使用python爬蟲庫(kù)requests,urllib與今日頭條搜索功能爬取搜索內(nèi)容實(shí)例
- Python爬蟲庫(kù)BeautifulSoup獲取對(duì)象(標(biāo)簽)名,屬性,內(nèi)容,注釋
- Python爬蟲庫(kù)requests-html進(jìn)行HTTP請(qǐng)求HTML解析等高級(jí)功能應(yīng)用
相關(guān)文章
Pytorch對(duì)Himmelblau函數(shù)的優(yōu)化詳解
今天小編就為大家分享一篇Pytorch對(duì)Himmelblau函數(shù)的優(yōu)化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別
下面小編就為大家分享一篇詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python 可迭代對(duì)象 iterable的具體使用
本文主要介紹了Python可迭代對(duì)象iterable,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
Python實(shí)現(xiàn)的多叉樹尋找最短路徑算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的多叉樹尋找最短路徑算法,結(jié)合實(shí)例形式分析了Python使用深度優(yōu)先查找獲取多叉樹最短路徑相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
python計(jì)算機(jī)視覺(jué)opencv矩形輪廓頂點(diǎn)位置確定
這篇文章主要為大家介紹了python計(jì)算機(jī)視覺(jué)opencv矩形輪廓頂點(diǎn)位置確定,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

