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

 更新时间:2018年05月18日 09:05:39   作者:M1mory  
今天小编就为大家分享一篇对python中使用requests模块参数编码的不同处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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编码正确处理

二、参数原样输出,不需要编码处理

使用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.

最后效果如下图,参数原样输出:

三、参数使用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

在该种请求下:

1. 如果参数需要URL编码.当参数少的时候可以使用dict定义.如果参数太多,dict比较麻烦,可以针对参数使用urllib.parse.quote("中文")手动encode成URL编码.

2. 如果中文参数需要原样输出.将参数格式化完成后再编码即可.pstr2 = "name={0}".format("中文").encode("utf-8")

以上这篇对python中使用requests模块参数编码的不同处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • tornado+celery的简单使用详解

    tornado+celery的简单使用详解

    今天小编就为大家分享一篇tornado+celery的简单使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python+Pytorch实战之彩色图片识别

    Python+Pytorch实战之彩色图片识别

    这篇文章主要为大家详细介绍了如何利用Python+Pytorch实现彩色图片识别功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-09-09
  • Python设计模式行为型责任链模式

    Python设计模式行为型责任链模式

    这篇文章主要介绍了Python设计模式行为型责任链模式,责任链模式将能处理请求的对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理请求为止,避免请求的发送者和接收者之间的耦合关系,下围绕改内容介绍具有一点的参考价值,需要的朋友可以参考下
    2022-02-02
  • Python基于随机采样一至性实现拟合椭圆(优化版)

    Python基于随机采样一至性实现拟合椭圆(优化版)

    这篇文章主要对上一版的Python基于随机采样一至性实现拟合椭圆的优化,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
    2022-11-11
  • python2.7实现FTP文件下载功能

    python2.7实现FTP文件下载功能

    这篇文章主要为大家详细介绍了python 2.7 实现FTP文件下载功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python利用imshow制作自定义渐变填充柱状图(colorbar)

    Python利用imshow制作自定义渐变填充柱状图(colorbar)

    这篇文章主要介绍了Python利用imshow制作自定义渐变填充柱状图(colorbar),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python中常见的几种音频数据读取、保存方式总结

    python中常见的几种音频数据读取、保存方式总结

    Python是一种非常适合进行音频处理和音频分析的语言,因为它有许多强大的库可以使用,下面这篇文章主要给大家介绍了关于python中常见的几种音频数据读取、保存方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • python 并发编程 多路复用IO模型详解

    python 并发编程 多路复用IO模型详解

    这篇文章主要介绍了python 并发编程 多路复用IO模型详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python实现烟花小程序

    python实现烟花小程序

    这篇文章主要为大家详细介绍了python实现烟花小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • python使用requests.post方法传递form-data类型的Excel数据的示例代码

    python使用requests.post方法传递form-data类型的Excel数据的示例代码

    这篇文章介绍了python使用requests.post方法传递form-data类型的Excel数据的示例代码,某些post接口,需要发送multipart/form-data类型的数据,如何使用python requests来模拟这种类型的请求发送呢?补充讲解了python使用requests post请求发送form-data类型数据,一起看看吧
    2024-01-01

最新评论