Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【经验总结】Python3 Requests 模块请求内容包含中文报错的解决办法

【经验总结】Python3 Requests 模块请求内容包含中文报错的解决办法

作者头像
TeamsSix
发布于 2020-02-18 08:55:35
发布于 2020-02-18 08:55:35
1.5K012
代码可运行
举报
运行总次数:12
代码可运行

0x00 前言

最近在写一个爬虫代码,里面需要使用 get 传参中文,但是如果直接使用中文而不对其编码的话,程序将会报错。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 38-39: ordinal not in range(256)

0x01 网上的一些解决办法

参考网上的解决办法,比如下面的几种办法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、在中文后加上".encode('GBK')"
2、在文件头部加上"#coding = utf-8"
3、在中文后加上".encode('utf-8')"

这几种方法在我这里都行不通,抓包也可以看到数据包里的中文并不是我们想象的经过 URL 编码的字符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /test=b'%5Cxe6%5Cxb5%5Cx8b%5Cxe8%5Cxaf%5Cx95' HTTP/1.1

0x02 可行的办法

最后才意识到,其实并不需要对中文进行 GBK、UTF-8 转码,而应该对其进行 URL 编码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from urllib.parse import quote
text = quote("测试", 'utf-8')

利用 quote 函数对 “测试” 进行 URL 编码后,再次抓包可以看到中文部分已经是 URL 格式了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /test=%E6%B5%8B%E8%AF%95 HTTP/1.1

此时,程序也不再报错,可以顺利执行了。

本文原文地址:https://www.teamssix.com/year/200206-202951.html 参考文章:https://blog.csdn.net/qq_33876553/article/details/79730246

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TeamsSix 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Python爬虫】一招搞定发送中文HTTP请求头
有时需要将HTTP请求头的值设为中文,但如果直接设成中文,会抛出异常,例如,下面的代码为Chinese请求头设置了中文。
蒙娜丽宁
2021/03/11
1.8K0
[Python3填坑之旅]一·urllib模块网页爬虫访问中文网址出错
正在学习网页爬虫,用的Python3+urllib模块,当遇到链接里有中文字符的时候总是报错。之前以为是Python编码的问题,不断去尝试不同的编码去encode与decode,可以问题总是解决不了,没有办法继续查阅资料,最后发现其实解决方法特别简单。
小宋是呢
2019/06/27
2.1K0
Python中文字符转义报错
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 19-31: ordinal not in range(128) 在Python中重设UTF-8编码输出 在脚本中加入 import sys import codecs sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) UnicodeEncodeError: ‘latin-1’ codec can’t
用户1316967
2022/01/18
1.2K0
Python常见问题 - requests请求参数包含中文报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in posit
在做接口自动化的时候,Excel作为数据驱动,里面存了中文,通过第三方库读取中文当请求参数传入 requests.post() 里面,就会报错
小菠萝测试笔记
2020/06/09
5.9K0
网络请求模块(2)
就像百度翻译翻译一样他是一个动态加载数据,有道翻译是 ajax 请求,真正的 URL 在 XHR 里
设计者
2022/12/20
5560
python2.7 的中文编码处理,解决UnicodeEncodeError: 'ascii' codec can't encode character 问题
最近业务中需要用 Python 写一些脚本。尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息。 很快,我就遇到了异常: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 为了解决问题,我花时间去研究了一下 Python 的字符编码处理。网上也有不少文章讲 Python 的字符编码,但是我看过一遍,觉得自己可以讲得
用户1214487
2018/05/28
16.5K0
python字符串编码及乱码解决方案
http://blog.csdn.net/pipisorry/article/details/44136297
全栈程序员站长
2022/09/06
2.3K0
python字符串编码及乱码解决方案
Python for Windows 中
关于python编码的基本常识 在python里面 “明文”是unicode类型 “密文”是其他的编码格式 如gbk utf-8 latin-1等等 编码: “明文”->”密文” .encode([目标编码格式]) 对象必须为unicode类型 解码: “密文”->”明文” .decode([源编码格式]) 对象为str类型 对于汉字 一共有三大类编码方式 以中文汉字”李”为例子 a. unicode类 机器码 \x67\x4e unicode(python表示) \u674e HTML E
py3study
2020/01/08
1.1K0
Python3 编码问题: 怎么将Unicode转中文,以及GBK乱码ÖйúÉÙÊýÃñ×åÌØÉ«´åÕ¯
如果type(text) is str, 那么text.encode(‘latin1’).decode(‘unicode_escape’)
学到老
2019/02/14
4.9K0
MySQL字符集终极指南--进阶篇
以下配置项是Linux系统的本地化(localization)设置,用于控制系统在不同方面如何呈现和处理数据。下面是每个配置项的解释:
DBA成江东
2023/08/14
2.5K0
MySQL字符集终极指南--进阶篇
转载:python的编码处理(一)
最近业务中需要用 Python 写一些脚本。尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息。 
黯然销魂掌
2018/09/27
8190
Python中的编码问题
视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html
py3study
2020/01/06
2.3K0
requests模块报错:Use body.encode('utf-8') if you want to send it encoded in UTF-8.
在做 企业向微信用户个人付款  功能时,调用第三方sdk,在 进行 requests 的post请求时,
用户1558882
2018/10/11
2.3K0
python requests 一种通过编码的反爬虫机制
简介:遇到一个反爬虫机制,该网页为gbk编码网页,但是请求参数中,部分请求使用gbk编码,部分请求使用utf8编码,还设置了一些不进行编码的安全字符,在爬取的过程中形成了阻碍。
forxtz
2021/03/19
7440
sublime Text与python3的中文编码错误解决办法
但是在windows上面运行代码正常。 原因是因为:linux系统语言导致的。 查看了一下系统环境编码
超蛋lhy
2018/12/06
8670
Python 编码转换与中文处理
python 中的 unicode是让人很困惑、比较难以理解的问题. 这篇文章 写的比较好,utf-8是 unicode的一种实现方式,unicode、gbk、gb2312是编码字符集.
bear_fish
2018/09/19
3.7K0
Python写入文件报错‘gbk’ codec can’t encode character的解决办法
使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 这个问题。 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的。 很多时候,我们使用了decode和encode,试遍了各种编码,utf8,utf-8,gbk,gb2312等等,该有的编码都试遍了,可是编译的时候仍然出现: UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position XXX。 
翎野君
2023/06/04
3.5K0
Python 编码转换与中文处理
python 中的 unicode是让人很困惑、比较难以理解的问题. utf-8是unicode的一种实现方式,unicode、gbk、gb2312是编码字符集.
py3study
2020/01/06
9860
解决SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xa3 in position
在Python编程过程中,我们有时会遇到SyntaxError错误,特别是在处理文本数据时。其中一个常见的SyntaxError错误是​​(unicode error) 'utf-8' codec can't decode byte 0xa3 in position 15: invalid start​​。这个错误表示Python无法解码特定字节。 这篇博客将为你介绍这个错误的原因,并提供一些可能的解决方案。
大盘鸡拌面
2023/10/30
4K0
Python之中文乱码解决方案
在Python2.X及Python3有时经常碰到各种中文乱码的情况,这里整理了相关各种情况汇总。
苦叶子
2023/06/09
1.6K0
Python之中文乱码解决方案
推荐阅读
相关推荐
【Python爬虫】一招搞定发送中文HTTP请求头
更多 >
交个朋友
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入北京开发者交友群
结识首都开发者 拓展技术人脉
加入前端工作实战群
前端工程化实践 组件库开发经验分享
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验