python自動化—robobrowser模擬登陸

簡介: 簡單來說,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標籤的網站!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章