美文网首页程序员
爬取豆瓣250遇到的print输出字符GBK编码问题

爬取豆瓣250遇到的print输出字符GBK编码问题

作者: hello2sys | 来源:发表于2017-09-23 20:05 被阅读0次

【问题】

用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’);

方案2:

或者,将其转换为GBK编码的超集GB18030(即,GBK是GB18030的子集):

print html.encode(“GB18030“);

对应的得到的字符是GB18030的编码。

新问题出现:

改了代码之后,虽然没有报之前的那个错误,但是打印出来文字,英文文字没有出现乱码,但是中文出现乱码的情况

添加以下代码即可解决问题:

import io

import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

相关文章

网友评论

    本文标题:爬取豆瓣250遇到的print输出字符GBK编码问题

    本文链接:https://www.haomeiwen.com/subject/kkfhextx.html