簡介: 簡單來說,robobrowser是一個輕量級的瀏覽器,自動測試庫,和selenium類似,但運行比selenium更爲隱蔽,因爲它不會打開瀏覽器頁面。如果之前的爬蟲中你有使用過requests和bs4,那robobrowser絕對會讓你愛不釋手。
安裝: pip install robobrowser
使用場景
- 模擬登陸: 這一需求在數據爬取的過程中經常會遇到,我們一般的處理方式,是用requests去模擬登陸請求,這對參數簡單點的網站來說堪稱利器,但對於參數複雜還加密的,就有點費力不討好了。但如果使用robobrowser,這個過程就會變得極其簡單。
- 操作流程
1.得到robobrowser對象
2.打開網站的登陸鏈接
3.找到登陸表單,得到表單對象
4.填寫用戶名和密碼
5.提交表單
6.驗證是否登陸成功 - 實例
使用robobrowser模擬登陸GitHub
- 操作流程
'''
@description:使用robobrowser模擬登陸GitHub
'''
from robobrowser import RoboBrowser
login_url = 'https://github.com/login'
'''生成robobrwser對象, lxml解析器需提前安裝 pip install lxml'''
rob = RoboBrowser(history=True,parser='lxml')
rob.open(login_url) #打開登陸頁面
login_form = rob.get_form(action="/session") #獲取登陸表單,先通過審查元素找到表單的action參數
login_form['login'].value = 'your username' #填寫用戶名
login_form['password'].value = 'your password' #填寫密碼
rob.submit_form(login_form) #提交表單
'''通過獲取首頁github圖標a標籤鏈接判斷登陸是否成功'''
try:
href = rob.find('a',class_='Header-link').get('href')
if href:
print('登陸成功,href=%s'%href)
except Exception as e:
print('登陸失敗,原因:%s'%e)
驗證目標:
結果如下:
-
數據抓取
因爲robobrowser依賴於bs4,所以其數據抓取方法和bs4基本相同,主要有三種方法。- find: 抓取頁面中的單個元素。
- find_all: 抓取頁面中的多個具有共同屬性的元素,結果返回一個列表。
- select: 元素選擇器,用過jquery的應該很熟悉,結果返回一個列表。
這部分就不做演示了,可以去看下bs4的用法——> bs4使用大全
注:
- robobrowser的兩大功能應爲表單提交 和數據抓取,模擬登陸是表單提交中的典型例子。
- 僅適用於表單結構明顯,即源碼中能看到明顯
form標籤
的網站!