Python爬蟲:Request Payload和Form Data的簡單區(qū)別說明
Request Payload 和 Form Data 請(qǐng)求頭上的參數(shù)差別在于:
Content-Type
Form Data
Post表單請(qǐng)求
代碼示例
headers = { "Content-Type": "application/x-www-form-urlencoded" } requests.post(url, data=data, headers=headers) Request Payload
傳遞json數(shù)據(jù)
headers = { "Content-Type": "application/json" } requests.post(url, data=json.dumps(data), headers=headers)
Scrapy 的FormRequest只支持 Form Data 表單提交,源碼固定為前者
補(bǔ)充知識(shí):如何傳遞Request PayLoad(請(qǐng)求負(fù)載)中的數(shù)據(jù)?
在做爬蟲的時(shí)候,在分析請(qǐng)求的過程,遇到參數(shù)長這樣的:
原理不太清楚,等搞明白再來補(bǔ)充。這里只記錄如何應(yīng)用這些數(shù)據(jù)。
用法:
根據(jù)上面的圖片,由于是post請(qǐng)求,參數(shù)一般是以key-value的json字符串傳遞,或者將參數(shù)放入map傳遞。我們可以看到很多name,這個(gè)name就是key,下面的數(shù)據(jù)就是value,我們可以提取所有的key及value,組成一個(gè)json字符串或者map傳遞即可。
比如上面的數(shù)據(jù)可以提取如下:
{"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來發(fā)請(qǐng)求的,所以我這樣傳參數(shù)即可:
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();
具體參數(shù)具體情況填啦。
是不是超簡單。
注意一點(diǎn),請(qǐng)求負(fù)載中的value值不一定是固定值,若每次請(qǐng)求都會(huì)發(fā)生變化,那么就需要分析這個(gè)變化的值從哪里來,動(dòng)態(tài)獲取這個(gè)值,然后發(fā)送請(qǐng)求才能正確。
以上這篇Python爬蟲:Request Payload和Form Data的簡單區(qū)別說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用python對(duì)文件中的單詞進(jìn)行提取的方法示例
這篇文章主要介紹了使用python對(duì)文件中的單詞進(jìn)行提取的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12python 利用pywifi模塊實(shí)現(xiàn)連接網(wǎng)絡(luò)破解wifi密碼實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)
這篇文章主要介紹了python 利用pywifi模塊實(shí)現(xiàn)連接網(wǎng)絡(luò)破解wifi密碼實(shí)時(shí)監(jiān)控網(wǎng)絡(luò),需要的朋友可以參考下2019-09-09基于keras輸出中間層結(jié)果的2種實(shí)現(xiàn)方式
今天小編就為大家分享一篇基于keras輸出中間層結(jié)果的2種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01ruff check文件目錄檢測--exclude參數(shù)設(shè)置路徑詳解
這篇文章主要為大家介紹了ruff check文件目錄檢測exclude參數(shù)如何設(shè)置多少路徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10python torch.utils.data.DataLoader使用方法
這篇文章主要介紹了python torch.utils.data.DataLoader使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04文件上傳服務(wù)器-jupyter 中python解壓及壓縮方式
這篇文章主要介紹了文件上傳服務(wù)器-jupyter 中python解壓及壓縮方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python三數(shù)之和的實(shí)現(xiàn)方式
這篇文章主要介紹了Python三數(shù)之和的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05