Python爬蟲:Request Payload和Form Data的簡(jiǎn)單區(qū)別說(shuō)明
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)求的過(guò)程,遇到參數(shù)長(zhǎng)這樣的:
原理不太清楚,等搞明白再來(lái)補(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來(lái)發(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ù)具體情況填啦。
是不是超簡(jiǎn)單。
注意一點(diǎn),請(qǐng)求負(fù)載中的value值不一定是固定值,若每次請(qǐng)求都會(huì)發(fā)生變化,那么就需要分析這個(gè)變化的值從哪里來(lái),動(dòng)態(tài)獲取這個(gè)值,然后發(fā)送請(qǐng)求才能正確。
以上這篇Python爬蟲:Request Payload和Form Data的簡(jiǎn)單區(qū)別說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- python爬蟲實(shí)現(xiàn)POST request payload形式的請(qǐng)求
- java.lang.Runtime.exec() Payload知識(shí)點(diǎn)詳解
- Servlet獲取AJAX POST請(qǐng)求中參數(shù)以form data和request payload形式傳輸?shù)姆椒?/a>
- 實(shí)例詳解Nodejs 保存 payload 發(fā)送過(guò)來(lái)的文件
- PHP XML error parsing SOAP payload on line 1
- 通過(guò)Python實(shí)現(xiàn)Payload分離免殺過(guò)程詳解
相關(guān)文章
Python遍歷zip文件輸出名稱時(shí)出現(xiàn)亂碼問(wèn)題的解決方法
這篇文章主要介紹了Python遍歷zip文件輸出名稱時(shí)出現(xiàn)亂碼問(wèn)題的解決方法,實(shí)例分析了Python亂碼的出現(xiàn)的原因與相應(yīng)的解決方法,需要的朋友可以參考下2015-04-04
Python通過(guò)cv2讀取多個(gè)USB攝像頭
這篇文章主要為大家詳細(xì)介紹了Python通過(guò)cv2讀取多個(gè)USB攝像頭,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
Python多分支語(yǔ)句的三種結(jié)構(gòu)詳解
這篇文章主要介紹了Python多分支語(yǔ)句的三種結(jié)構(gòu),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
PyQT5 QTDesigner窗口及組成的實(shí)現(xiàn)
這篇文章主要介紹了PyQT5 QTDesigner窗口及組成的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
如何用Python實(shí)現(xiàn)自動(dòng)發(fā)送微博
大家好,本篇文章主要講的是如何用Python實(shí)現(xiàn)自動(dòng)發(fā)送微博,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏2022-01-01

