作者:hello2sys
链接:https://www.jianshu.com/p/6d862ba1a566
来源:简书
【问题】
用Python抓取网页html
出现如下错误:
exception raised:‘gbk’ codec can’t encode character u’\xa0’ in position 73: illegal multibyte sequence
【问题原因】
对于此Unicode字符(html),需要print出来的话,由于本地系统是Windows中的cmd,默认codepage是CP936,即GBK的编码,所以python解释器需要先将上述的Unicode字符html编码为GBK,然后再在cmd中显示出来。
【解决办法】
方案1:
在对unicode字符编码时,添加ignore参数,忽略无法无法编码的字符,这样就可以正常编码为GBK了。
对应代码为:
print html.encode(“GBK“,‘ignore’);
新问题出现:
改了代码之后,虽然没有报之前的那个错误,但是打印出来文字,英文文字没有出现乱码,但是中文出现乱码的情况
添加以下代码即可解决问题:
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding=‘gb18030’)
PS:学习的时候在网上找过很多方法,实在是都跟我遇到的问题不同,无意间看见该作者的解答,真的解决了我的燃眉之急,做个记录,哈哈哈!!!