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批量导出导入MySQL用户的方法
Nov 15 Python
Python对象的深拷贝和浅拷贝详解
Aug 25 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
Python字符串对象实现原理详解
Jul 01 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
Python urllib3软件包的使用说明
Nov 18 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
Python实现socket库网络通信套接字
Jun 04 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
服务器端解压缩zip的脚本
2006/12/22 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
Python 编码处理-str与Unicode的区别
2016/09/06 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
Python笔记之代理模式
2019/11/20 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
家长通知书家长意见
2014/12/30 职场文书
护理专业自我评价
2015/03/11 职场文书
CSS基础详解
2021/10/16 HTML / CSS