python爬虫中文输出问题以及不即时输出问题
2017-12-15 00:31
281 查看
使用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(),未验证
网上搜索一下,其中一种解决方案是:
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(),未验证
相关文章推荐
- python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
- python第一个爬虫小程序以及遇到问题解决(中文乱码)+批量爬取网页并保存至本地
- Python输出中文到文件时的字符编码问题
- python输出中文乱码的问题
- 解决python3输出中文的问题
- Python2.7爬虫cmd打印中文ASCII码的问题
- log4j:WARN Unsupported encoding以及输出日志中文乱码的问题
- Python操作MySQL以及中文乱码的问题
- python中文输出问题
- Python操作MySQL以及中文乱码的问题_mengl_2011-ChinaUnix博客
- 解决python程序中文输出问题两法
- python爬虫获取编码时中文乱码问题
- python json.dumps输出中文问题
- Python输出中文乱码问题
- 用python写文件输出,解决输出的中文为乱码问题
- python输出json时中文处理问题
- Python操作MySQL以及中文乱码的问题_mengl_2011-ChinaUnix博客
- BeautifulSoup中文乱码解决问题 python 爬虫 乱码
- Python操作MySQL以及中文乱码的问题
- python 2.7输出中文字符串的编码问题