对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批量下载图片的三种方法
Apr 22 Python
用Python展示动态规则法用以解决重叠子问题的示例
Apr 02 Python
简单介绍Python中利用生成器实现的并发编程
May 04 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
python的命名规则知识点总结
Oct 04 Python
如何利用python读取micaps文件详解
Oct 18 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
PHP6 先修班 JSON实例代码
2008/08/23 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
php汉字转拼音的示例
2014/02/27 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
详解Swift中属性的声明与作用
2016/06/30 Python
Python解惑之整数比较详解
2017/04/24 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
python 图片去噪的方法示例
2019/07/09 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
外贸业务员的岗位职责
2013/11/23 职场文书
空气环保标语
2014/06/12 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
任命书格式模板
2015/09/22 职场文书
Kubernetes控制节点的部署
2022/04/01 Servers