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中的socket模块使用代理实例
May 29 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
python文件操作相关知识点总结整理
Feb 22 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
解决在pycharm中显示额外的 figure 窗口问题
Jan 15 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
Python卷积神经网络图片分类框架详解分析
Nov 07 Python
Pygame Rect区域位置的使用(图文)
Nov 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
我的论坛源代码(九)
2006/10/09 PHP
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
javascript中的this详解
2014/12/08 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
用Python实现KNN分类算法
2017/12/22 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
wxPython实现文本框基础组件
2019/11/18 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
《中彩那天》教学反思
2014/02/22 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
教师节活动总结
2014/08/29 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
python中的None与NULL用法说明
2021/05/25 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技