python爬虫使用requests发送post请求示例详解


Posted in Python onAugust 05, 2020

简介

HTTP协议规定post提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编码方式。服务端通过是根据请求头中的Content-Type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。具体的编码方式包括:

application/x-www-form-urlencoded 最常见post提交数据的方式,以form表单形式提交数据。
application/json 以json串提交数据。
multipart/form-data 一般使用来上传文件。

一、 以form表单发送post请求

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

# -*- coding: utf-8 -*-
# author:Gary
import requests

url = 'http://httpbin.org/post' # 一个测试网站的url
data = {'key1': 'value1', 'key2': 'value2'} # 你发送给这个的数据
r = requests.post(url, data=data) # 使用requests的post方法,data接受你想发送的数据
print(r.text) # 查看返回的内容

输出

{ 
“args”: {}, 
“data”: “”, 
“files”: {}, 
 #你提交的表单数据
“form”: { 
“key1”: “value1”,
“key2”: “value2” 
}, 
“headers”: { 
…… 
“Content-Type”: “application/x-www-form-urlencoded”, 
…… 
}, 
“json”: null, 
…… 
}

 可以看到,请求头中的Content-Type字段已设置为application/x-www-form-urlencoded,且data = {‘key1': ‘value1', ‘key2': ‘value2'}以form表单的形式提交到服务端,服务端返回的form字段即是提交的数据。

二、 以json形式发送post请求

可以将一json串传给requests.post()的data参数,

# -*- coding: utf-8 -*-
# author:Gary
import requests
import json

url = 'http://httpbin.org/post' # 一个测试网站的url
json_data = json.dumps({'key1': 'value1', 'key2': 'value2'}) # 你发送给这个的数据,数据格式转为json
r = requests.post(url, data=json_data) # 使用requests的post方法,data接受你想发送的数据
print(r.text) # 查看返回的内容

输出:

{ 
“args”: {}, 
“data”: “{\”key2\”: \”value2\”, \”key1\”: \”value1\”}”, 
“files”: {}, 
“form”: {}, 
“headers”: { 
…… 
“Content-Type”: “application/json”, 
…… 
}, 
“json”: { 
“key1”: “value1”, 
“key2”: “value2” 
}, 
…… 
}

可以看到,请求头的Content-Type设置为application/json,并将json_data这个json串提交到服务端中。

三、 以multipart形式发送post请求(上传文件)

Requests也支持以multipart形式发送post请求,只需将一文件传给requests.post()的files参数即可。

# -*- coding: utf-8 -*-
# author:Gary
import requests

url = 'http://httpbin.org/post'
files = {'file': open('report.txt', 'rb')} # 目录下得有report.txt文件才能上传,rb是指以二进制格式打开一个文件用于只读。
r = requests.post(url, files=files) # 通过files参数指定你想发送的文件的内容
print(r.text)

输出:

{ 
“args”: {}, 
“data”: “”, 
“files”: { 
“file”: “Hello world!” 
}, 
“form”: {}, 
“headers”: {…… 
“Content-Type”: “multipart/form-data; boundary=467e443f4c3d403c8559e2ebd009bf4a”, 
…… 
}, 
“json”: null, 
…… 
}

文本文件report.txt的内容只有一行:Hello world!,从请求的响应结果可以看到数据已上传到服务端中。

到此这篇关于python爬虫使用requests发送post请求示例详解的文章就介绍到这了,更多相关python爬虫使用requests发送post请求内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
盘点提高 Python 代码效率的方法
Jul 03 Python
Python对列表排序的方法实例分析
May 16 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
Aug 30 Python
Python文件操作基本流程代码实例
Dec 11 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
Python中使用遍历在列表中添加字典遇到的坑
Feb 27 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
Python3常见函数range()用法详解
Dec 30 Python
python安装第三方库如xlrd的方法
Oct 31 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 Python
8种常用的Python工具
Aug 05 #Python
浅析Python 序列化与反序列化
Aug 05 #Python
Python创建临时文件和文件夹
Aug 05 #Python
学习Python爬虫的几点建议
Aug 05 #Python
Python调用C/C++的方法解析
Aug 05 #Python
浅谈Python3中print函数的换行
Aug 05 #Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 #Python
You might like
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
PHP实现图片简单上传
2006/10/09 PHP
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
python批量提交沙箱问题实例
2014/10/08 Python
python如何实现int函数的方法示例
2018/02/19 Python
python list元素为tuple时的排序方法
2018/04/18 Python
python 美化输出信息的实例
2018/10/15 Python
python中树与树的表示知识点总结
2019/09/14 Python
通过实例解析Python调用json模块
2019/12/11 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
Python如何读写CSV文件
2020/08/13 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
应届生简历中的自我评价
2014/01/13 职场文书
秸秆管理实施方案
2014/03/15 职场文书
公司寄语大全
2014/04/10 职场文书
2015年端午节活动总结
2015/02/11 职场文书
感谢信
2019/04/11 职场文书