Python requests 编码问题

【调试记录】GT ip跑aurora 64b66b协议 如果不用,会出现这种情况:自回环测试,数据收发ok.一旦和对方通信,对方接收的就是一堆乱码,因为GT链路发送数据不能是全1或全0,或者长时间的1或0.否则线路容易受到干扰,毕竟线速率10多G,用了加扰和解扰,就可以提高抗干扰能力。64B66B编码,数据输入是64bit,输出是66bit,所以这之间存在着2bit的带宽差,Gearbox 就是用来解决这种差异的,实现方式是:将66bit数据拿出来2bit先存入Gearbox,然后输出64bit.发送同步码或控制数据时,配置成2.2.4 加扰和解扰! 阅读详情

一、背景介绍

接着上一篇文章《Python 安装 pyecharts 和 WordCloud 报错解决》中所说,我跟着教程去爬取了网易云音乐某首歌的热评,出现了中文字符乱码的问题,而教程则没有这个问题。折腾了很久 encode 和 decode 之后仍未解决,最后想了想会不会是我自己的问题,而不是数据原始编码的问题?比对了我和作者的代码之后,我发现是爬虫课的嵩天老师给的通用爬虫框架惹的祸,且听我细细道来。

二、问题分析

我的代码(关键部分)

try:
    r = requests.post(url, headers=headers, data=user_data)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.encoding) # Windows-1256
except:
    traceback.print_exc()

这里我套用了爬虫课学到了的 try - raise_for_status - except 异常处理,这个没有问题,关键在于这一行:r.encoding = r.apparent_encoding,它的作用是把修改响应头的编码为 request 分析后认为可能性最大的编码,这里它认为编码是 Windows-1256。我尝试之后发现,如果不修改 r.encoding,那么它的值是 UTF-8,也就是说网易云音乐服务器返回给我们的请求头里的编码是真正的编码,而 requests 却判断错误了,导致程序没有用正确的编码来处理中文字符。

问题又来了,为什么 r.apparent_encoding 会判断错误呢?首先还是得先说明一下为什么会在已经有 r.encoding 的情况下还要提供 r.apparent_encodinig 这个属性。

一般来说,如果 requests 得到的响应头没有指定编码或者响应头的编码不能被正常提取出来,requests 这个库会默认把 r.encoding 设置为 ISO-8859-1 (别名:latin-1) 。事实上响应的内容多数情况下不会是 ISO-8859-1,这就导致了响应 body 里的中文不能被正常解析。于是,requests 为它的响应对象增加了一个 apparent_encoding 属性,这个属性实际上是通过另一个 Python 编码检测模块 chardet 来实现的,这个结果仅仅是一种较高可能性,仍然可能会出错。

三、问题解决

我的想法是,以后爬取得到响应的时候,先判断一下 r.encoding 是否为 ISO-8859-1,如果是的话就说明响应的编码方式没有被正确获取到,这时候在运用 r.encoding = r.apparent_encoding 尝试修正。
(如果 r.apparent_encodiing 猜出来的编码仍是错误的话…)


写完文章的两个小时后发现: r.encoding = r.apparent_encoding 打印 r.encoding 显示的是 utf-8,是正确的,也就是说这个是个概率事件?每一次计算可能会有不同的结果?不管怎么说程序中先判断一下 r.encoding 总是没有错的。

ABAP 平台注册 OAuth 2.0 Client 的完整实践指南(覆盖 Authorization Code、SAML Bearer 与 PKCE) 本文详述了在ABAP平台上注册入站OAuth 2.0 Client的关键技术和操作要点。文章面向SAP技术人员,系统梳理了前置条件(TLS/SSL、技术用户、授权对象)、配置路径(SOAUTH2事务)、授权类型差异(授权码、SAML Bearer、PKCE)等重要内容。特别强调入站与出站配置的区别,并提供了保密客户端和公有客户端的配置指引。文中所有事务码和参数均参考SAP官方文档,包含多个实用案例和权限配置建议,为ABAP系统作为OAuth 2.0授权服务器的实施提供全面指导。 阅读详情

相关推荐

北京途游游戏后端开发面经

北京途游游戏后端开发面经 我面试岗位是基于Python的后端开发工程师,主要是搞游戏的服务器开发。面试一共分了两轮,之后说是看看其他的候选人再定,感觉凉凉~~ 由于受到此次新型冠状病毒疫情的影响,本次面试采用视频面试的方式,下面是面试的时候面试官提的问题,python的基础知识还是问的比较多的。  一面:(32分钟微信视频)  简单做下自我介绍,   1.说一下你开发过的项目,挑一个说下你都做了...

weixin_45603043的博客 2124

Python中requests请求的内容编码问题

问题: 用requests请求页面,用print(req.encoding)查看网页编码,有时候会显示:ISO-8859-1 原因: requests会从服务器返回的响应头的 Content-Type 去获取字符集编码,如果content-type有charset字段那么requests才能正确识别编码,否则就使用默认的 ISO-8859-1. 一般那些不规范的页面往往有这样的问题. 解决办法: response.encoding = response.apparent_encoding requests的

mz02230909mz的博客 1273

那些年-SAP固定资产导入AS91 OASV

固定资产起初导入步骤: 第一部分:资产数据导入 1)两个日期配置 填写图片摘要(选填) Specify transfer date/last closed fiscal year 这里的日期填写系统切换日期,如果系统是2015-10-01上线,这里填写2015-09-3 填写图片摘要(选填) Specifylast period posted in prv system 这里指定系统切换的上一期间。这里写2015-09 填写图片摘要(选填) ​2)AS91新增 填写固定资产的分类,公司

阿土工作室 7945

解析Python requests响应内容编码规则

1.发现问题 我们在使用requests发送请求时,响应的内容有时候会出现乱码的情况,下面我举一个例子: import requests r = requests.get('http://www.baidu.com') print(r.text) # 打印发现内容为乱码 我们可以使用r.encoding来查看编码解析text时我们的字符集编码是什么: print(r.encoding) 打印结果: 然后我们在通过r.text查看到HTML本身的字符集编码是utf-8,所以这里才会出现乱码的情况

点工一枚 7456

【华为2021校招】笔试题【通用硬件】

时间:2020/07/15 19:00 时长:60min 题型:40单选+5多选 难度:中等 考察范围:模电、数电、SI、EMC、电源、微机原理、计算机网络、材料

Jkcia的博客 4万+

视频教程-SAP S4 HANA FICO COPA 获利能力分析-ERP

SAP S4 HANA FICO COPA 获利能力分析 从业超过8年的SA...

weixin_33456805的博客 1441

python requests 编码_Python requests中的编码问题

你可以用.decode('gdk', errors='ignore')或者.decode('gdk', errors='replace')来解码Pythonreqeusts抓取返回页面时,碰到页面乱码requests的返回结果对象里有个apparent_encoding函数, apparent_encoding通过调用chardet.detect()来识别文本编码. 但是需要注意的是,这有些消耗计...

weixin_39637233的博客 842

IPD的分析工具与模型(十六)CBB公用基础模块管理实现资源共享,缩短开发周期降低成本

CBB流程的开发环节,基于CBB规划中所识别和设计的CBB,进行CBB的详细设计(包括参数设计和接口设计),并最终实现CBB的落地开发。作为特殊类型的技术构件,CBB的开发流程,可沿用技术开发中的构件开发流程,具体包括概念、计划、开发和迁移等步骤,具体可参见前文的相关介绍。有了蓝图与架构设计,落地实施是关键攻坚。具体工作内容包括:具体工作内容包括:a. 以相似性、聚类、相对独行性、可组合、可扩展性、可维护性等原则为指导,按照产品的功能特征和业务类型,聚焦零散的功能点,形成功能模块,实现产品功能模块的划分;

Easyways1的博客 1377

Python学习笔记——requests编码格式设置

1.requests设置 #调用requests模块 import requests #访问需要访问的页面 r = requests.get(url) #在输出结果前先设置内容编码 r.encoding = "utf-8" print(r.text) 2.二进制转字符串时设置编码 import requests r = requests.get(url) a = r.content #获取二进制 a = a.decode('UTF-8','strict')#将二进制解码成字符串 utf-8.

小橙子的博客 6331

YOLO26-seg分割优化:FPN涨点&轻量化篇 |多级特征融合金字塔(HS-FPN),助力小目标检测

​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 279

labelImg使用教程

Anaconda环境 安装 Anaconda 之后,在开始菜单下找到 Anaconda 文件夹 找到 Anaconda Prompt 点击运行 安装 labelImg pip install labelImg #直接命令行输入 启动 labelImg labelImg #直接命令行输入名称即可 labelImg界面 开始标注 快捷键:W(创建方框),A(上一张),D(下一张) XML文件示例 <annotation> <folder>夜读</folder>

G果的博客 3万+

python+request响应结果中文乱码处理之encoding和apparent_encoding的区别和应用

一般在获取响应内容时,会出现响应结果乱码或者为ascii码,首先需要知道用的是那种编码方式,其次如何针对性去解码 encoding是从http的header中的charset字段中提取的编码方式,如果header中没有charst字段,则会默认为ISO-8859-1编码模式。则无法解析中文,所以会造成乱码 apparent_encoding是从网页的响应内容分析编码的方式,所有更加准确,当响应内容出现乱码时,可以把apparent_encoding的编码格式赋值给encoding 实例1: ``

weixin_45878889的博客 5406

五步通关!宝塔Linux部署ASP.NET Core的魔法秘籍大公开!

摘要: 本文提供ASP.NET Core应用五步部署攻略,涵盖从环境配置到线上运行的完整流程: 1️⃣ 环境准备:安装宝塔面板、ASP.NET Core运行时及开放端口; 2️⃣ 应用发布:通过dotnet publish生成独立部署包并上传服务器; 3️⃣ Nginx配置:设置反向代理将域名请求转发至应用端口; 4️⃣ 进程守护:使用Supervisor确保应用持续运行; 5️⃣ HTTPS加密:通过宝塔快速申请SSL证书并解决验证路径冲突。 关键点: 强调权限设置(755)、端口开放及反向代理细节; 提

java专栏 969

python requests 编码_Python Requests库对 URL 编码问题

一、问题在编写跨站脚本漏洞辅助验证脚本时遇到一个问题,当使用 Requests 模块发起请求,默认会对 URL 进行一次编码,比如下面的代码:proxy = {"http": "http://127.0.0.1:8080"}response = requests.get(res, proxies=proxy).text使用 Burp Suite 抓包可以看到请求 URL 被 URL 编码了一次:二...

weixin_39634480的博客 1696

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

关于Python-requests内容编码问题

参考了代码分析Python requests库中文编码问题一文,自己整理了一部分1.运行以下代码,结果为乱码 2.运行: print(req.encoding)结果显示ISO-8859-1 之所以会有ISO-8859-1这种编码是因为: requests会从服务器返回的响应头的 Content-Type 去获取字符集编码,如果content-type有charset字段那么

qtzx 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python requests编码的问题_Requests 库编码问题及引出的 Python 编码问题

Requests 编码在使用 requests 访问微信接口的时候,requests 只根据 http headers 的信息来设置编码集,文档如下:response.text()Content of the response, in unicode.If Response.encoding is None, encoding will be guessed using chardet.The e...

weixin_39646084的博客 509

python3中使用requests库出现的编码问题

最近在使用python完成爬虫任务时遇到了编码问题,查看了很多资料,现总结一些编码的知识。 1、编码解码 1、1 字符和字节 “字节”是一个8位的物理存贮单元。而“字符”则是一个文化相关的符号。 字符是人类能够识别的符号,而这些符号要保存到计算的存储中就需要用计算机能够识别的字节来表示。一个字符往往有多种表示方法,不同的表示方法会使用不同的字节数。这里所说的不同的表示方法就是指字符编码,比...

moshanghuali的博客 9235

python requests 编码格式_Python requests中的编码问题

你可以用.decode('gdk', errors='ignore')或者.decode('gdk', errors='replace')来解码Pythonreqeusts抓取返回页面时,碰到页面乱码requests的返回结果对象里有个apparent_encoding函数, apparent_encoding通过调用chardet.detect()来识别文本编码. 但是需要注意的是,这有些消耗计...

weixin_28766993的博客 2716

Python,requests库编码问题

关于python编码的那些坑 只有bytes类才有decode() 一般来讲 GBK,UTF-8,ASCII这些编码用的最多,所以如果是碰运气这些的几率要高些

nick131410的博客 915

Python requests发送post请求的编码问题

详细版本见个人博客:Python requests发送post请求的编码问题 在HTTP协议中,post提交的数据必须放在消息主体中,但是协议中并没有规定必须使用什么编码方式,从而导致了提交方式的不同。服务端根据请求头中的Content-Type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。具体的编码方式包括如下: application/x-www-form-urle...

dta0502的博客 1万+

python requests接收chunked编码问题

最近用python的requests写个爬虫下载

金九 的技术博客 4万+

Python requests库中文乱码问题汇总(编码)

Python requests库中文乱码问题汇总(编码) 在用requests爬取网页时,经常会碰到网页的编码问题导致中文乱码 <dt>特色服务</dt> 这时首先查看页面源代码,看meta标签里的编码是什么,然后设置成相应的编码即可 response.encoding = 'utf-8' # 设置编码 但有...

weixin_30836759的博客 102

python爬虫问题: requests库中文编码问题

为什么会有ISO-8859-1这样的字符集编码 requests会从服务器返回的响应头的 Content-Type 去获取字符集编码,如果content-type有charset字段那么requests才能正确识别编码,否则就使用默认的 ISO-8859-1. 一般那些不规范的页面往往有这样的问题. \requests\utils.py 如何获取正确的编码 reque...

人生苦短, 还不用Python? 5758

python requests编码的问题_Python学习--- requests库中文编码问题

为什么会有ISO-8859-1这样的字符集编码requests会从服务器返回的响应头的 Content-Type 去获取字符集编码,如果content-type有charset字段那么requests才能正确识别编码,否则就使用默认的 ISO-8859-1. 一般那些不规范的页面往往有这样的问题.\requests\utils.pydef get_encoding_from_headers(hea...

weixin_39772420的博客 321

python requests编码的问题_python requests 编码问题

url = host + pathheaders = {...}data = {...}files = {...}files两种类型: 字典和 元组{"field1" : ("filename1", open("filePath1", "rb")),"field2" : ("filename2", open("filePath2", "rb"), "image/jpeg"),"field3" : ...

weixin_39835178的博客 125

Python默认编码及requests模块问题

今天在用一个POC测试漏洞的时候,遇到了两个问题,由于对Python脚本不熟悉,所以百度了一下解决方法。很快问题就解决了,来个总结:问题一:在运行Python脚本时候直接提示:“SyntaxError: Non-ASCII character '\xe5……'  ”查了一下是Python默认编码错误。这个错误是由于使用了中文输出或用中文对脚本进行注释,并且将文件存成了UTF-8。Python的默认...

EDDJH_31的博客 851
上一篇: Python 安装 pyecharts 和 WordCloud 报错解决
下一篇: Linux 默认使用 python3 和 pip3 并与 python2 和 pip2 共存
六开箱
博客等级 码龄10年 47粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值