Python爬虫:Request Payload和Form Data的简单区别说明
Request Payload 和 Form Data 请求头上的参数差别在于:
Content-TypeForm 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的简单区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持好吧啦网。
相关文章:
1. 三道java新手入门面试题,通往自由的道路--锁+Volatile2. Docker究竟是什么 为什么这么流行 它的优点和缺陷有哪些?3. SpringBoot+SpringCache实现两级缓存(Redis+Caffeine)4. php读取xml中某个元素的内容(PHP5以上才支持)5. ASP.NET MVC视图页使用jQuery传递异步数据的几种方式详解6. Java基于redis和mysql实现简单的秒杀(附demo)7. AJAX实现省市县三级联动效果8. Kotlin + Flow 实现Android 应用初始化任务启动库9. 如何用python识别滑块验证码中的缺口10. 关于HTML5的img标签
