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的logging模块在stdout输出的两种方法
May 17 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
使用tensorflow实现AlexNet
Nov 20 Python
pyhton列表转换为数组的实例
Apr 04 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
WxPython建立批量录入框窗口
Feb 27 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
Python3安装pip工具的详细步骤
Oct 14 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 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
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
php实现的短网址算法分享
2014/06/20 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
python实现发送邮件功能代码
2017/12/14 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
python 实现矩阵按对角线打印
2019/11/29 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
贝佳斯官方网站:Borghese
2020/05/08 全球购物
ktv总经理岗位职责
2014/02/17 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
2015年度保密工作总结
2015/04/24 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
使用MybatisPlus打印sql语句
2022/04/22 SQL Server
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android