您好,登錄后才能下訂單哦!
小編這次要給大家分享的是Python爬蟲:Request Payload和Form Data有什么區別,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
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<String,String> m = new HashMap<String,String>(); 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值不一定是固定值,若每次請求都會發生變化,那么就需要分析這個變化的值從哪里來,動態獲取這個值,然后發送請求才能正確。
看完這篇關于Python爬蟲:Request Payload和Form Data有什么區別的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。