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 不同对象比较大小示例探讨
Aug 21 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
Python反射用法实例简析
Dec 22 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
Python模块zipfile原理及使用方法详解
Aug 04 Python
如何查看python关键字
Jan 17 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
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
PHP目录操作实例总结
2016/09/27 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
javascript中的new使用
2010/03/20 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
python支持断点续传的多线程下载示例
2014/01/16 Python
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
Django 返回json数据的实现示例
2020/03/05 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
会计实习自我鉴定
2013/12/04 职场文书
连带责任保证书
2014/04/29 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
优秀教师单行材料
2014/12/16 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
vue elementUI批量上传文件
2022/04/26 Vue.js
Java死锁的排查
2022/05/11 Java/Android