对python中使用requests模块参数编码的不同处理方法


Posted in Python onMay 18, 2018

python中使用requests模块http请求时,发现中文参数不会自动的URL编码,并且没有找到类似urllib (python3)模块中urllib.parse.quote("中文")手动URL编码的方法.研究了半天发现requests模块对中文参数有3种不同的处理方式.

一、requests模块自动URL编码参数

要使参数自动URL编码,需要将请求参数以字典的形式定义,如下demo:

import requests

proxy = {"http":"http://127.0.0.1:8080",
 "https":"http://127.0.0.1:8080"}

def reTest():
 url = "http://www.baidu.com"
 pdict = {"name":"中文测试"}
 requests.post(url = url,data = pdict,proxies = proxy)

效果如下图,中文被URL编码正确处理

对python中使用requests模块参数编码的不同处理方法

二、参数原样输出,不需要编码处理

使用dictionary定义参数,发送请求时requests模块会自动URL编码处理参数.但有些时候可能不需要编码,要求参数原样输出,这个时候将参数直接定义成字符串即可.

import requests

proxy = {"http":"http://127.0.0.1:8080",
 "https":"http://127.0.0.1:8080"}

def reTest():
 url = "http://www.baidu.com"
 pstr1 = "name=中文".encode("utf-8")
 requests.post(url = url,data = pstr1, proxies = proxy)

注:参数需要utf-8编码,否则会报错Use body.encode('utf-8') if you want to send it encoded in UTF-8.

最后效果如下图,参数原样输出:

对python中使用requests模块参数编码的不同处理方法

三、参数使用format或%格式化,导致参数str变成bytes

有些时候直接定义的字符串参数,其中有的参数是变量,需要format或%格式化控制变量.这个时候会发现格式化后的参数变成了bytes.

import requests

proxy = {"http":"http://127.0.0.1:8080",
 "https":"http://127.0.0.1:8080"}

def reTest():
 url = "http://www.baidu.com"
 pstr2 = "name={0}".format("中文".encode("utf-8"))
 requests.post(url = url,data = pstr2, proxies = proxy)

参数变成了bytes

对python中使用requests模块参数编码的不同处理方法

在该种请求下:

1. 如果参数需要URL编码.当参数少的时候可以使用dict定义.如果参数太多,dict比较麻烦,可以针对参数使用urllib.parse.quote("中文")手动encode成URL编码.

2. 如果中文参数需要原样输出.将参数格式化完成后再编码即可.pstr2 = "name={0}".format("中文").encode("utf-8")

以上这篇对python中使用requests模块参数编码的不同处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
Python面向对象编程中的类和对象学习教程
Mar 30 Python
django站点管理详解
Dec 12 Python
python使用KNN算法手写体识别
Feb 01 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
Python随机数函数代码实例解析
Feb 09 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
python实现学生管理系统开发
Jul 24 Python
python实现图片素描效果
Sep 26 Python
详解python算法常用技巧与内置库
Oct 17 Python
用python删除文件夹中的重复图片(图片去重)
May 12 Python
Python3.6连接Oracle数据库的方法详解
May 18 #Python
python爬虫之模拟登陆csdn的实例代码
May 18 #Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 #Python
python自动截取需要区域,进行图像识别的方法
May 17 #Python
Python使用Phantomjs截屏网页的方法
May 17 #Python
Python 实现网页自动截图的示例讲解
May 17 #Python
Python操作Sql Server 2008数据库的方法详解
May 17 #Python
You might like
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
php获取excel文件数据
2017/04/21 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
Node.js实现发送邮件功能
2017/11/06 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
最基础的Python的socket编程入门教程
2015/04/23 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
Python-openCV开运算实例
2020/07/05 Python
Tory Burch德国官网:美国时尚生活品牌
2018/01/03 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
2014年父亲节活动方案
2014/03/06 职场文书
职业生涯规划书范文
2014/03/10 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
董事长新年致辞
2015/07/29 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
Pandas搭配lambda组合使用详解
2022/01/22 Python