对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类的多重继承问题深入分析
Nov 09 Python
python中的__slots__使用示例
Feb 26 Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python中 Lambda表达式全面解析
Nov 28 Python
Python实现读取并保存文件的类
May 11 Python
python学习教程之Numpy和Pandas的使用
Sep 11 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
django的csrf实现过程详解
Jul 26 Python
django使用JWT保存用户登录信息
Apr 22 Python
Django-imagekit的使用详解
Jul 06 Python
python playwright 自动等待和断言详解
Nov 27 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编程开发“虚拟域名”系统
2006/10/09 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
类似框架的js代码
2006/11/09 Javascript
学习YUI.Ext 第二天
2007/03/10 Javascript
Javascript !!的作用
2008/12/04 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
Python教程之全局变量用法
2016/06/27 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
网络技术专业推荐信
2014/02/20 职场文书
承诺书格式范文
2014/06/03 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
整脏治乱工作简报
2015/07/21 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL