【爬蟲入門8】表單互動與模擬登入
表單互動與模擬登入
表單互動
什麼是表單互動
使用python實現表單提交
無論是簡單網頁還是採用非同步載入的網頁,都是使用GET方法請求網址來請求網頁資訊;
如果想獲得登入表單後的資訊,就需要進行表單互動。
requests的post方法
import requests
payload = {
'key1': 'value1',
'key2': 'value2'
}
res = requests.post(url, data=payload)
res.encoding = 'utf-8'
res.text
1、檢視網頁原始碼提交表單
找到登入表單,檢視網頁原始碼
找到form標籤,知道登入資料往action="https://www.douban.com/accounts/login"傳;
找到form中的input標籤,知道傳輸哪些資料:
<input type="hidden" value="index_nav" name="source">
<input type="text" name="form_email" id="form_email" value="" class="inp" placeholder="郵箱 / 手機號" tabindex="1" data-form-un="1533350332326.7986">
<input name="form_password" placeholder="密碼" id="form_password" class="inp" type="password" tabindex="2" data-form-pw="1533350332326.7986">
傳入data的內容為:name: value
import requests
url = 'https://www.douban.com/accounts/login'
payload = {
'source' : 'index_nav',
'form_email': [email protected] ,
'form_password': xxx
}
res = request.post(url, data=payload)
res.encoding='utf-8'
page = res.text
2、逆向工程提交表單
還有另一種方式,檢視提交表單內容;
使用瀏覽器開發者工具,進入Network,輸入賬號密碼登入後檢視抓到的資料包。
模擬登入
有些時候表單資料可以通過加密或者其他形式進行包裝,增大了構造表單的難度;
有些時候還需要輸入驗證碼;
這個時候可以選擇提交cookie資訊進行模擬登入,繞過表單。
cookie概述
儲存使用者資訊的本地檔案;
某些網站為了辨別使用者身份進行session跟蹤儲存在使用者本地終端上的資料。
提交cookie模擬登入
import requests
url = 'https://www.douban.com/'
headers ={
'Cookies':'xxxx'
}
request.get(url,headers=headers)
爬取拉勾網招聘資訊
然後檢視網頁原始碼,無法搜尋到頁面顯示的招聘資訊;
換頁檢視,發現瀏覽器顯示的url也並沒有發生改變,所以換頁其實也是通過AJAX做的;
F12檢視XHR,可以知道它是通過提交form表單請求資料,然後返回一個Json資料
我們只需要獲取它的Json資料;
此外,每頁展示15條,總共3837條;頁面上只展示30頁(450條)