1. 前言
大家好,我是安果含滴!
今天推薦一款小眾輕量級的爬蟲庫:RoboBrowser
RoboBrowser,Your friendly neighborhood web scraper丐巫!由純 Python 編寫谈况,運行無需獨立的瀏覽器,它不僅可以做爬蟲递胧,還可以實現(xiàn) Web 端的自動化
項目地址:
https://github.com/jmcarp/robobrowser
2. 安裝及用法
在實戰(zhàn)之前碑韵,我們先安裝依賴庫及解析器
PS:官方推薦的解析器是 「lxml」
# 安裝依賴
pip3 install robobrowser
# lxml解析器(官方推薦)
pip3 install lxml
RoboBrowser 常見的 2 個功能為:
模擬表單 Form 提交
網(wǎng)頁數(shù)據(jù)爬取
使用 RoboBrowser 進行網(wǎng)頁數(shù)據(jù)爬取,常見的 3 個方法如下:
-
find
查詢當(dāng)前頁面滿足條件的第一個元素
-
find_all
查詢當(dāng)前頁面擁有共同屬性的一個列表元素
-
select
通過 CSS 選擇器缎脾,查詢頁面泼诱,返回一個元素列表
需要指出的是,RoboBrowser 依賴于 BS4赊锚,所以它的使用方法和 BS4 類似
更多功能可以參考:
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
3. 實戰(zhàn)一下
我們以「 百度搜索及爬取搜索結(jié)果列表 」為例
3-1 打開目標(biāo)網(wǎng)站
首先治筒,我們實例化一個 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')
# 打開目標(biāo)網(wǎng)站
rb.open(home_url)
然后舷蒲,使用 RoboBrowser 實例對象中的 open() 方法打開目標(biāo)網(wǎng)站
3-2 自動化表單提交
首先耸袜,使用 RoboBrowser 實例對象獲取網(wǎng)頁中的表單 Form
然后,通過為表單中的輸入框賦值模擬輸入操作
最后牲平,使用 submit_form() 方法進行表單提交堤框,模擬一次搜索操作
# 獲取表單對象
bd_form = rb.get_form()
print(bd_form)
bd_form['wd'].value = "AirPython"
# 提交表單,模擬一次搜索
rb.submit_form(bd_form)
3-3 數(shù)據(jù)爬取
分析搜索頁面的網(wǎng)頁結(jié)構(gòu)纵柿,利用 RoboBrowser 中的 select() 方法匹配出所有的搜索列表元素
遍歷搜索列表元素蜈抓,使用 find() 方法查詢出每一項的標(biāo)題及 href 鏈接地址
# 查看結(jié)果
result_elements = rb.select(".result")
# 搜索結(jié)果
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() 方法模擬一下「點擊鏈接昂儒,查看網(wǎng)頁詳情」的操作
# 跳轉(zhuǎn)到第一個鏈接
rb.follow_link(first_href)
# 獲取歷史
print(rb.url)
需要注意的是沟使,follow_link() 方法的參數(shù)為帶有 href 值的 a 標(biāo)簽
4. 最后
文中結(jié)合百度搜索實例,使用 RoboBrowser 完成了一次自動化及爬蟲操作
相比 Selenium渊跋、Helium 等腊嗡,RoboBrowser 更輕量級着倾,不依賴獨立的瀏覽器及驅(qū)動
如果想處理一些簡單的爬蟲或 Web 自動化,RoboBrowser 完全夠用燕少;但是面對一些復(fù)雜的自動化場景卡者,更建議使用 Selenium、Pyppeteer客们、Helium 等
我已經(jīng)將文中完整源碼文件傳到后臺崇决,關(guān)注公眾號「 AirPython 」,后臺回復(fù)「 rb 」即可獲得
如果你覺得文章還不錯底挫,請大家 點贊恒傻、分享、留言 下凄敢,因為這將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強動力碌冶!