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 相关文章推荐
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
Python通过解析网页实现看报程序的方法
Aug 04 Python
python通过微信发送邮件实现电脑关机
Jun 20 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
flask-restful使用总结
Dec 04 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
python实践项目之监控当前联网状态详情
May 23 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
Python 实现敏感目录扫描的示例代码
May 21 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
python爬取豆瓣电影TOP250数据
May 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
PHP 输出简单动态WAP页面
2009/06/09 PHP
php str_pad 函数用法简介
2009/07/11 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
php常用的工具开发整理
2019/09/26 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
python根据文本生成词云图代码实例
2019/11/15 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
医药个人求职信范文
2014/01/29 职场文书
安全教育演讲稿
2014/05/09 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
植树造林的宣传标语
2014/06/23 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
Go语言编译原理之源码调试
2022/08/05 Golang