python

本文分析了在Python3.8中使用lxml.etree处理包含中文的网页时出现乱码的问题。尽管常规的`tostring(encoding='utf-8').decode('utf-8')`方法对整个网页有效,但针对特定部分仍可能出现乱码。问题根源在于Requests库的默认解码方式与网页实际编码(如gb2312)不一致。解决方法是通过设置`r.encoding`为网页的实际编码,确保与HTML head中的`charset`一致,从而正确解码中文内容。
摘要由CSDN通过智能技术生成

关于python3.8中lxml.etree出现中文乱码问题分析

先说明本人说使用的平台为rhel7,python版本为3.8.本来想要执行的任务是通过lxml.etree提取网页中的信息,但由于从该网页中提取的信息带有中文,显示全为乱码,参考了很多文章,发现文不对题,无法解决问题,更加没有进一步深入去解析,所以自己又花费了一些时间查阅,有了一个大概的印象,肯定还有遗漏之处,请大家指正。
首先,对lxml.etree下的tostring(enconding = ‘utf-8’).decode(‘utf-8’)进行说明,网上大多数方法都是提供这种解决方案,实测之下,发现对整个网页是有效的,但当针对页面的某个部分提取显示时,却仍旧显示中文乱码。
所以又不断查找,也翻阅官方文档,看到了相关的解释,地址是官方文档地址 。在它的标题为响应内容的段落下,解释了原因,结合本人的理解总结如下。
Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。网页的格式在某些情况下可能会与requests的解码格式不同,猜测requests的默认解码方式为utf-8,至于网页的格式可以通过在浏览器按F12查看,具体信息在html下的head头中,我要提取信息的网页的head如下:meta http-equiv=“Content-Type” content=“text/html; charset=gb2312”,说明该网页的中文字符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值