python自动提交表单_python接口自动化二(发送post请求)_weixin_39875629的博客-程序员秘密

技术标签: python自动提交表单  

前言

一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样:

请求行

请求报头

消息主体

HTTP协议规定post提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编码方式。

服务端通过是根据请求头中的Content-Type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。

具体的编码方式包括:

application/x-www-form-urlencoded

最常见post提交数据的方式,以form表单形式提交数据。

application/json

以json串提交数据。

multipart/form-data

一般使用来上传文件。

三种编码请求实例

1.提交Form表单

Reqeusts支持以form表单形式发送post请求,只需要将请求的参数构造成一个字典,然后传给requests.post()的data参数即可。

2.提交json串

错误写法:json格式data参数不能传送字典,不然运行会报错

headers可以用fiddler去抓取

即使写上了 'Content-Type':'application/json; charset=UTF-8' ,返回依然出错了,原因就在于 你的请求实体的格式错了,服务端无法解码。

正确写法

1.import json用json.dumps将字典转换成json格式

r = requests.post(url=url,data=json.dumps(data),headers=headers)

2传参数时直接使用json,这个方法headers里面不用再传"Content-Type":"application/json; charset=UTF-8"

r = requests.post(url=url,json=jdata,headers=headers)

3.上传文件

上传文件在爬虫中使用的很少,不过还是使用requests讲解一下使用方式。

Content-Type类型为multipart/form-data,以multipart形式发送post请求,只需将一文件传给requests.post()的files参数即可。还是以http://httpbin.org/post 为例,

代码如下:

url = 'http://httpbin.org/post'files= {'file': open('upload.txt', 'rb')}

r= requests.post(url, files=files)print(r.text)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39875629/article/details/110547514

智能推荐

常见问题:如何使用AWR报告来诊断数据库性能问题 (文档 ID 1523048.1)_desert_xu的博客-程序员秘密

常见问题:如何使用AWR报告来诊断数据库性能问题 (文档 ID 1523048.1)转到底部文档内容目标 最佳实践 如何主动避免问题发生及做好诊断信息的收集 提出问题、获取帮助并分享您的经验

嵌入式AI开发:Maixduino人脸特征识别与标记-程序员秘密

本案例使用Maixduino开发板,检测到人脸并框出人脸位置,用特征提取模型提取出人脸的特征值,找到人脸的眼睛鼻子嘴巴,进行标记。1、模型下载本案例需要下载三个smodel 模型文件,模型可以在下载链接中进行下载:Sipeed MaixHub – sipeed AI 模型平台注意:训练和下载模型都需要开发板的机器码,可以在以下链接中获得机器码:欢迎您,《获取MaixPy系列开发板机器码——MaixHub 机器码获取》。获得机器码后可以输入机器码下载获得模型。下载的三个模型如下

roller5.0.1 maven install juice 报错解决_wenpp的博客-程序员秘密

roller5.0.1下载后,根目录执行mvn install始终报:[code="java"]INFO] Reactor Summary:[INFO] [INFO] Apache Roller Project ............................. SUCCESS [0.783s][INFO] Apache Roller Core Module ........

java中方法、类、对象和变量的概念_小塔儿的博客-程序员秘密

类和对象类的声明和创建类声明声明类格式:修饰符 class 类名 extends 父类 implements 接口名{ 修饰符 类型名 成员变量名; //成员变量(数据)声明 ······ 修饰符 返回值 成员方法名 参数列表{ //成员方法声明 语句序列; }······}修饰符:public 默认修饰符 abstract finalextends:如果类说明中没有extends,则隐含的假设父类为java.lang.object类。类主

IIS 依存服务或组无法启动_iis 无法联接最新组个件_ZXFC88的博客-程序员秘密

今天很郁闷,由于自己的失误,数据丢失啦,这可是我两个星期的工作啊!   本想既然已经丢失啦,没有办法,就用公司给配的笔记本在家里面完成工作吧,毕竟是自己的失误导致的错误!需要自己去挽回。可是我的.net程序却怎么也运行不起来,打开IIS一看,结果IIS里面什么也没有,晕,这个机器是别人装好啦,我用啊,我也不知道他装没有装全IIS,我就试着连接一下本地计算机,结果报出错误:“依存服务或组无法

Kotlin之SharedFlow和Stateflow_stateflow和sharedflow_FLYUP_CHEN的博客-程序员秘密

SharedFlowSharedFlow是一个hot stream. sharedflow有以下特点:没有默认值可以保持旧值emit会挂起直到所有的订阅者处理完成public fun <T> MutableSharedFlow( replay: Int = 0, extraBufferCapacity: Int = 0, onBufferOverflow: BufferOverflow = BufferOverflow.SUSPEND)replay:

随便推点

win2000 SERVER的安全配置_weixin_34187822的博客-程序员秘密

目前,WIN2000 SERVER是比较流行的服务器操作系统之一,但是要想安全的配置微软的这个操作系统,却不是一件容易的事。本文试图对win2000 SERVER的安全配置进行初步的探讨。一、 定制自己的WIN2000 SERVER1.版本的选择:WIN2000有各种语言的版本,对于我们来说,可以选择英文版或简体中文版,我强烈建议:在语言不成为障碍的情况下,请一定使用英文版。...

(iOS开发) 弹出选择相册图片以及之后的图片地址_下个夏天xia的博客-程序员秘密

1、首先需要遵循代理:UIImagePickerControllerDelegate2、PS:此方法适配iOS8之后,如果想用UIAlertView,请自己实现-(void)changeIcon:(UITapGestureRecognizer*)tap{ /** * 弹出提示框 */ //初始化提示框 UIAlertController *a

国丰帮您-mysql_secure_installation自动执行脚本_guofeng80的博客-程序员秘密

国丰帮您-mysql_secure_installation自动执行脚本安装完mysql-server 会提示可以运行mysql_secure_installation。运行mysql_secure_installation会执行几个设置:a)为root用户设置密码b)删除匿名账号c)取消root用户远程登录d)删除test库和对test库的访问权限e)刷新授权表使修改生效————————————————版权声明:本文为CSDN博主「sunnie_mm」的原创文章,遵循CC 4.0 BY-S

Matplotlib常用绘图指令大全_matplotlib指令_假小牙的博客-程序员秘密

常用配置: matplotlib.rcParams本文首发于本csdn博主私人博客:Timing is FunA dictionary object including validation import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline m...

Grub禁用UUID_a635825902的博客-程序员秘密

  这个属于一个个人喜好问题,我每次看到 df -h 的结果都很郁闷,根目录那一行设备是用uuid表示的,那一串字符真是够长的,看起来非常别扭,所以就自己修改了一下/etc/default/grub文件。  刚开始我东翻西找的,先是修改了/etc/fstab文件,我本以为是这里的问题,结果发现不是。后来我想起来是grub的kernel那一行的"root="参数问题,我又修改了/etc...

推荐文章

热门文章

相关标签