对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 相关文章推荐
python3 实现的人人影视网站自动签到
Jun 19 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
python多进程控制学习小结
Oct 31 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
在python中用print()输出多个格式化参数的方法
Jul 16 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
pytorch中的inference使用实例
Feb 20 Python
解决Python 写文件报错TypeError的问题
Oct 23 Python
python 解决微分方程的操作(数值解法)
May 26 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 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.MVC的模板标签系统(四)
2006/09/05 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
python实现折半查找和归并排序算法
2017/04/14 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
Python如何在DataFrame增加数值
2020/02/14 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
三好学生自我鉴定
2013/12/17 职场文书
初中物理教学反思
2014/01/14 职场文书
总经理岗位职责范本
2014/02/02 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
社会调查研究计划书
2014/05/01 职场文书
股权转让协议范本
2014/12/07 职场文书
教师个人发展总结
2015/02/11 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
《花钟》教学反思
2016/02/17 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书