python爬虫中文输出问题以及不即时输出问题

2017-12-15  本文已影响0人  丶不见长安丶

使用sublime运行爬虫程序时,会有报错UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 0: illegal multibyte sequence的情况,因为python安装在windows平台上,cmd的默认编码为GBK,所以在cmd中显示中文时会经常提示gbk编码错误。

网上搜索一下,其中一种解决方案是:

import io

import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')#改变输出字符集

这样修改后问题是解决了,但是还会有个坑。爬虫程序在处理网页请求时需要时间,你如果想要判断程序是否在运行,可能会在不同的位置加打印语句来判断。这个时候因为前面的改变输出字符集操作,会导致整段程序全部跑完才会输出,而不是实时输出print语句,例如:

1按时

常理来说应该是先输出"你好",然后输出"你好1",等待10s后输出"你好2"

但是实际运行时,会卡住一会(延迟10s)然后同时输出"你好","你好1","你好2"

解决方法1:通过python自带的idle运行程序,idle默认支持中文输出,但是要去掉sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8'),不然会报错。

解决方法2:在要打印的地方加上sys.stdout.flush(),未验证

上一篇下一篇

猜你喜欢

热点阅读