1. 程式人生 > >【爬蟲入門8】表單互動與模擬登入

【爬蟲入門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條)