歡迎您光臨本站 註冊首頁

Python爬蟲:Request Payload和Form Data的簡單區別說明

←手機掃碼閱讀     qp18502452 @ 2020-04-30 , reply:0

Request Payload 和 Form Data 請求頭上的參數差別在於:

Content-Type

Form Data

Post表單請求

代碼示例

headers = { "Content-Type": "application/x-www-form-urlencoded" } requests.post(url, data=data, headers=headers) Request Payload

傳遞json數據



headers = { "Content-Type": "application/json" } requests.post(url, data=json.dumps(data), headers=headers)

Scrapy 的FormRequest只支持 Form Data 表單提交,源碼固定為前者

補充知識:如何傳遞Request PayLoad(請求負載)中的數據?

在做爬蟲的時候,在分析請求的過程,遇到參數長這樣的:

原理不太清楚,等搞明白再來補充。這裡只記錄如何應用這些數據。

用法:

根據上面的圖片,由於是post請求,參數一般是以key-value的json字符串傳遞,或者將參數放入map傳遞。我們可以看到很多name,這個name就是key,下面的數據就是value,我們可以提取所有的key及value,組成一個json字符串或者map傳遞即可。

比如上面的數據可以提取如下:

{"view:id1:txtSearch":"","$$viewid":"!f9fpyhcv2t!","$$xspsubmitid":"view:_id1:_id2:pager1_Group_lnk_2","$$xspexecid":"view:_id1:_id2:parent","$$xspsubmitvalue":"","$$xspsubmitscroll":"0|0","view:_id1":"view:_id1"}

或者:

Map

m = new HashMap(); m.put("view:id1:txtSearch", ""); m.put("$$viewid", "!f9fpyhcv2t!"); m.put("$$xspsubmitid", "view:_id1:_id2:pager1_Group_lnk_2"); m.put("$$xspexecid", "view:_id1:_id2:parent"); m.put("$$xspsubmitvalue", ""); m.put("$$xspsubmitscroll", "0|0"); m.put("view:_id1", "view:_id1");

由於我是用Jsoup來發請求的,所以我這樣傳參數即可:

Jsoup.connect("").data(m).cookies(null).method(Method.POST);

或者:

Connection conn = Jsoup.connect(""); String requestJson = "{"view:id1:txtSearch":"","$$viewid":"!f9fpyhcv2t!","$$xspsubmitid":"view:_id1:_id2:pager1_Group_lnk_2","$$xspexecid":"view:_id1:_id2:parent","$$xspsubmitvalue":"","$$xspsubmitscroll":"0|0","view:_id1":"view:_id1"}"; conn.requestBody(requestJson); conn.cookies(null).method(Method.POST); conn.execute();

具體參數具體情況填啦。

是不是超簡單。

注意一點,請求負載中的value值不一定是固定值,若每次請求都會發生變化,那麼就需要分析這個變化的值從哪裡來,動態獲取這個值,然後發送請求才能正確。

[qp18502452 ] Python爬蟲:Request Payload和Form Data的簡單區別說明已經有324次圍觀

http://coctec.com/docs/python/shhow-post-232317.html