对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 相关文章推荐
使用Python写CUDA程序的方法
Mar 27 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 Python
python实现电子产品商店
Feb 26 Python
Python GUI编程完整示例
Apr 04 Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 Python
python机器学习实现决策树
Nov 11 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
Python程序控制语句用法实例分析
Jan 14 Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 Python
Python 如何批量更新已安装的库
May 26 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 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新手NOTICE错误常见解决方法
2011/12/07 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
js中的string.format函数代码
2020/08/11 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
python开头的coding设置方法
2019/08/08 Python
python打印异常信息的两种实现方式
2019/12/24 Python
如何利用python读取micaps文件详解
2020/10/18 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
庆七一活动方案
2014/01/25 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
面试必备的求职信
2014/05/25 职场文书
幸福家庭标语
2014/06/27 职场文书
对照检查剖析材料
2014/09/30 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
2014年租房协议书范本
2014/10/30 职场文书
会计求职简历自我评价
2015/03/10 职场文书
第一节英语课开场白
2015/06/01 职场文书
师范生教育见习总结
2015/06/23 职场文书