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中用format函数格式化字符串的用法
Apr 08 Python
Python用threading实现多线程详解
Feb 03 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
python命令行参数用法实例分析
Jun 25 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
python如何调用字典的key
May 25 Python
numpy的Fancy Indexing和array比较详解
Jun 11 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 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
php实现mysql数据库备份类
2008/03/20 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
微信跳一跳游戏python脚本
2020/04/01 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
python使用folium库绘制地图点击框
2018/09/21 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
html5 canvas 使用示例
2010/10/22 HTML / CSS
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
办公室前台岗位职责
2014/01/04 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
MySQL七种JOIN类型小结
2021/10/24 MySQL