对python中使用requests模块参数编码的不同处理方法

作者:M1mory 时间:2022-11-02 01:30:29 

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")

来源:https://blog.csdn.net/M1mory/article/details/58309378

标签:python,requests,模块,编码
0
投稿

猜你喜欢

  • 一篇文章搞懂Python Unittest测试方法的执行顺序

    2023-11-01 09:38:01
  • Pycharm设置去除显示的波浪线方法

    2022-06-29 16:04:59
  • go中new和make的区别小结

    2024-05-09 09:39:48
  • 简单了解什么是神经网络

    2023-10-11 22:26:34
  • VBScript运行出错信息涵义列表

    2007-08-12 18:03:00
  • [翻译]寻找圣杯 In Search of the Holy Grail

    2008-11-12 13:10:00
  • 详解duck typing鸭子类型程序设计与Python的实现示例

    2022-12-26 07:12:19
  • Python开发常用的一些开源Package分享

    2022-12-10 22:00:11
  • 利用C#远程存取Access数据库

    2024-01-27 01:58:32
  • Python利用FlashText算法实现替换字符串

    2023-05-17 06:18:11
  • Python手动实现Hough圆变换的示例代码

    2023-11-03 03:12:42
  • asp 使用正则表达式替换word中的标签,转为纯文本

    2011-02-28 10:49:00
  • Python使用sftp实现上传和下载功能(实例代码)

    2023-12-26 09:35:41
  • 自己用的ASP分页函数

    2009-10-18 11:30:00
  • php牛逼的面试题分享

    2023-11-20 19:31:35
  • 非常全面的Python常见基础面试题及答案

    2022-11-14 17:03:33
  • c#连接sqlserver数据库、插入数据、从数据库获取时间示例

    2024-01-16 02:13:53
  • 详解利用Python制作中文汉字雨效果

    2023-04-26 07:09:17
  • 详解Python打包分发工具setuptools

    2022-10-18 02:53:13
  • python 对dataframe下面的值进行大规模赋值方法

    2022-01-08 07:04:19
  • asp之家 网络编程 m.aspxhome.com