Python爬虫:Request Payload和Form Data的简单区别说明


Posted in Python onApril 30, 2020

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的简单区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 命令行非阻塞输入的小例子
Sep 27 Python
Python实现的一个简单LRU cache
Sep 26 Python
Python多层嵌套list的递归处理方法(推荐)
Jun 08 Python
python开发利器之ulipad的使用实践
Mar 16 Python
Django REST framework 视图和路由详解
Jul 19 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
Python实现AI自动抠图实例解析
Mar 05 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
基于Pyinstaller打包Python程序并压缩文件大小
May 28 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
python爬虫scrapy框架的梨视频案例解析
Feb 20 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 #Python
python针对Oracle常见查询操作实例分析
Apr 30 #Python
python实现Oracle查询分组的方法示例
Apr 30 #Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 #Python
如何安装并在pycharm使用selenium的方法
Apr 30 #Python
Python基于进程池实现多进程过程解析
Apr 30 #Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 #Python
You might like
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
跨浏览器的事件对象介绍
2012/06/27 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
jQuery特殊符号转义的实现
2016/11/30 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
js实现全选和全不选
2020/07/28 Javascript
python使用webdriver爬取微信公众号
2018/08/31 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
工作期间打牌检讨书范文
2014/11/20 职场文书
2014年教务工作总结
2014/12/03 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
撤诉状格式范本
2015/05/19 职场文书
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers
Python时间操作之pytz模块使用详解
2022/06/14 Python