python使用requests模块参数编码的不同处理
来源:互联网 发布:eosinfo软件下载 编辑:程序博客网 时间:2024/05/20 07:52
python中使用requests模块http请求时,发现中文参数不会自动的URL编码,并且没有找到类似urllib (python3)模块中urllib.parse.quote("中文")
手动URL编码的方法.研究了半天发现requests模块对中文参数有3种不同的处理方式.
一、requests模块自动URL编码参数
要使参数自动URL编码,需要将请求参数以字典的形式定义,如下demo:
import requestsproxy = {"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编码正确处理
二、参数原样输出,不需要编码处理
使用dictionary定义参数,发送请求时requests模块会自动URL编码处理参数.但有些时候可能不需要编码,要求参数原样输出,这个时候将参数直接定义成字符串即可.
import requestsproxy = {"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.
最后效果如下图,参数原样输出:
三、参数使用format或%格式化,导致参数str变成bytes
有些时候直接定义的字符串参数,其中有的参数是变量,需要format或%格式化控制变量.这个时候会发现格式化后的参数变成了bytes.
import requestsproxy = {"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
在该种请求下:
1. 如果参数需要URL编码.当参数少的时候可以使用dict定义.如果参数太多,dict比较麻烦,可以针对参数使用urllib.parse.quote("中文")
手动encode成URL编码.
2. 如果中文参数需要原样输出.将参数格式化完成后再编码即可.pstr2 = "name={0}".format("中文").encode("utf-8")
0 0
- python使用requests模块参数编码的不同处理
- python 的requests模块
- 【爬虫】Python的Requests模块
- Python requests模块的学习
- python的requests 模块使用方法
- Python-requests的使用
- Python:使用getopt模块处理命令行参数
- Python之Requests模块使用详解
- Python之Requests模块使用详解
- python使用requests爬网页编码问题
- python下requests模块的安装方法
- python中requests模块的安装
- python requests模块的安装和使用方法
- python的http请求模块urllib+requests
- python中requests模块的使用方法
- python的网络编程之requests模块
- python的requests初步使用
- python的requests初步使用
- Linux笔记1(遇见的查到的就记下来了啦)
- ActiveX插件的使用
- hibernate正向生成数据库表以及配置——Teacher.java
- The valid characters are defined in RFC 7230 and RFC 3986 错误
- NTP错误解决方法
- python使用requests模块参数编码的不同处理
- 5-2 一元多项式的乘法与加法运算 (20分)
- Struts2拦截器与上传下载
- mysql操作遇到的问题
- Java--正则表达式
- 【Java常用排序算法】归并排序(二路归并排序)
- 渗透测试 3 基本扩展
- Java 基础 (七) 反射机制
- c++第一次上机:求两点之间的距离