我们再用python来爬取html的时候,有时候html会是gbk编码,此时如果我们用如下语句:
html = html.decode("gbk")
可能会报错:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x81 in position 5993: illegal multibyte sequence
解决办法:
Python bytes decode() 方法语法:
str.decode([encoding="utf-8"][,errors="strict"])
参数
- encoding — 可选参数,要使用的编码,默认编码为 ‘utf-8’。
- errors — 可选参数,设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。
所以这里带上ignore即可
html = html.decode("gbk",errors="ignore")
如果print输出也报gbk错误,我们可以直接如下进行输出即可:
print(str(infos[0]).encode('gbk', 'ignore').decode('gbk'))