Python_爬虫_中文乱码

今天在用Python2.7爬取百度百科的一个网页时发现输出时中文为乱码。
尝试一:
查看网页页面信息,发现其中文字编码为“GBK”,遂准备对其进行解码。

content = urllib2.urlopen(url).read().decode('gbk').encode('utf-8')

报错UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 3681-3682: illegal multibyte sequence
尝试二:
百度之后发现有人说可能是网页信息是被gzip压缩的,需要先解压缩

import gzip, StringIO
html = gzip.GzipFile(fileobj=StringIO.StringIO(html), mode="r")
html = html.read().decode('gbk').encode('utf-8’)

报错说文本未被压缩
尝试三(成功):
偶然间看到网上有个代码在decode中加了第二个参数’ignore’,尝试了下竟然成功了,原来是文本中有不属于gbk的编码,之前遇到时就会报错,但其实那些地方无关紧要,需要的信息正确就好。

content = urllib2.urlopen(url).read().decode('gbk','ignore').encode('utf-8')

另附:判断文本真实编码的代码:

import chardet
print chardet.detect(content)['encoding']
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值