Python爬蟲(chóng):Request Payload和Form Data的簡(jiǎn)單區(qū)別說(shuō)明
Request Payload 和 Form Data 請(qǐng)求頭上的參數(shù)差別在于:
Content-TypeForm 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ù)?
在做爬蟲(chóng)的時(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爬蟲(chóng):Request Payload和Form Data的簡(jiǎn)單區(qū)別說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. asp讀取xml文件和記數(shù)2. XML入門(mén)的常見(jiàn)問(wèn)題(一)3. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案4. 阿里前端開(kāi)發(fā)中的規(guī)范要求5. html小技巧之td,div標(biāo)簽里內(nèi)容不換行6. 告別AJAX實(shí)現(xiàn)無(wú)刷新提交表單7. IE6/IE7/IE8/IE9中tbody的innerHTML不能賦值的完美解決方案8. 不同瀏覽器對(duì)XML的解析是不同的9. 讀寫(xiě)xml文件的2個(gè)小函數(shù)10. webpack高級(jí)配置與優(yōu)化詳解
