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编写一个基于终端的实现翻译的脚本
Apr 24 Python
python获取从命令行输入数字的方法
Apr 29 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
利用Django-environ如何区分不同环境
Aug 26 Python
python使用matplotlib绘制热图
Nov 07 Python
python基于递归解决背包问题详解
Jul 03 Python
python set集合使用方法解析
Nov 05 Python
python连接mongodb集群方法详解
Feb 13 Python
python实现的人脸识别打卡系统
May 08 Python
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
May 24 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
php生成与读取excel文件
2016/10/14 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
玩转方法:call和apply
2014/05/08 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
办公室主任竞聘演讲稿
2014/05/15 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL