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中使用strip()方法删除字符串中空格的教程
May 20 Python
python使用super()出现错误解决办法
Aug 14 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
python pandas 对series和dataframe的重置索引reindex方法
Jun 07 Python
python实现周期方波信号频谱图
Jul 21 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
Python实现疫情通定时自动填写功能(附代码)
May 27 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 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
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
js Date概念详细介绍
2013/11/22 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
python3.6实现学生信息管理系统
2019/02/21 Python
python解析xml简单示例
2019/06/21 Python
详解Django admin高级用法
2019/11/06 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
有关打架的检讨书
2014/01/25 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
公司辞职信模板
2015/05/13 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
大学入学感言
2015/08/01 职场文书
PHP策略模式写法
2021/04/01 PHP
python中filter,map,reduce的作用
2022/06/10 Python