解决python爬虫中文乱码问题

解决python爬虫中文乱码问题

首先网页时可能采用不同编码的,类似这个我爬取的网页
编码gb2312

当我直接使用.text函数打印时会出现如下乱码
看不懂的乱码

尝试编码结果
print(strhtml.text.encode(“utf8”))
但发现明显中文被变成了字节
变成了看不懂的字节

于是看.text的源码
@property
def text(self):
# Try charset from content-type
content = None
encoding = self.encoding
if not self.content:
return str(’’)
# Fallback to auto-detected encoding.
if self.encoding is None:
encoding = self.apparent_encoding
# Decode unicode from given encoding.
try:
content = str(self.content, encoding, errors=‘replace’)
except (LookupError, TypeError):
# A LookupError is raised if the encoding was not found which could
# indicate a misspelling or similar mistake.
# A TypeError can be raised if encoding is None
# So we try blindly encoding.
content = str(self.content, errors=‘replace’)
return content

可以明显的发现此处用于解码的encoding是继承自父类strhtml的,而没有设置过的话父类的默认
的编码方式是“utf8”,但是显然与网页使用的不一样,刚才之所以无法用encode编码,或是解码
是因为.text之后就已经是解码时候的结果了

解决方法

strhtml.encoding=“gb2312”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值