用python抓取网页,很容易遇到例如:‘utf8‘ codec can‘t decode byte 0xc5 类似的编码的问题。
这里提供几种排查思路:
- 可以先查看你的Linux系统是不是UTF-8。如果不是的话可以修改:
echo $LANG
export LANG=en_US.UTF8
- 首先python2默认所有编码统一是unicode,因此你可以在代码前面加入
#-*-coding:utf-8 -*-
- 网页的编码可能为gbk,可以把gbk先decode,在统一encode为utf-8。
response = response.decode(‘gbk‘,‘ignore‘).encode(‘utf-8‘)
- 也可以利用import chardet先做判断
encoding_dict = chardet.detect(response) web_encoding = encoding_dict[‘encoding‘] if web_encoding == ‘utf-8‘ or web_encoding == ‘UTF-8‘: html = response else : html = response.decode(‘gbk‘,‘ignore‘).encode(‘utf-8‘)
我遇到的问题就解决了,如果有其他情况,我会继续补充,欢迎指正
时间: 2024-10-17 03:21:17