使用urllib2爬取网页时,由于网页编码和系统的编码不统一,会导致乱码问题。
一般linux系统都使用utf-8编码,将爬取的网页内容转换成utf-8编码,统一编码类型。
1)检测网页编码类型
2)编码转换
import urllib2
import chardet
if __name__=="__main__":
url = "http://news.163.com/16/1030/20/C4LDRHVC000189FH.html"
req = urllib2.Request(url)
res = urllib2.urlopen(req)
html = res.read()
# 获取网页编码
char_type = chardet.detect(html)
print char_type
# 非utf-8码
if chardet["encoding"].lower() != 'utf-8':
html = unicode(html, "gbk").encode("utf8")
print html
编码类型gb2312的网页进行encode('utf-8')转码时,会出现错误。用gbk就会避免错误。