美文网首页程序员
爬取豆瓣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