程序员

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

2017-09-23  本文已影响0人  hello2sys

【问题】

用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')

上一篇下一篇

猜你喜欢

热点阅读