我是靠谱客的博主 可爱书包,最近开发中收集的这篇文章主要介绍windows下python爬虫编码格式报错解决方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先说说我为何出现了这个问题,因为学完爬虫后想拿豆瓣电影Top250练练手,这个是参考的链接(http://blog.csdn.net/fighting_no1/article/details/50926008),该博客的代码几乎把豆瓣电影上的内容全解析了,于是我先保存代码到本地运行一下,结果是得到的excel文件不对,折腾了一天才知道是解析的网页中&nbsp这个特殊字符在进行转码时无法正确编码,

UnicodeEncodeError: 'gbk' codec can't encode character u'xa0' in position

相信类似的问题大家都会遇到吧,要么是乱码,要么是直接这种类型的报错,其实归根究底是python字符编码和解码的问题,比如同样的python文件我在window下运行报上面的错误,ubuntu下就没事,都是这种编码解码原因。

先说下解决的办法,具体的原因可以参考这个篇博客,参考的原因解释链接,介绍的非常详细,我也不重复造轮子了就。

如果在window下运行,原因: 
对于Unicode字符,需要print出来的话,由于本地系统是Windows中的cmd,默认codepage是CP936,即GBK的编码,所以python解释器需要先将上述的Unicode字符编码为GBK,然后再在cmd中显示出来。但是由于该Unicode字符串中包含一些GBK中无法显示的字符,导致此时提示“’gbk’ codec can’t encode”的错误的。

解决方法1: 
在转换的时候必需进行一些前置动作

string.replace(u’xa0’, u’ ‘)

将’xa0‘替换成u’ ‘空格,这个xa0就是那个html中的&nbps空格

解决方法2: 
在对unicode字符编码时,添加ignore参数,忽略无法无法编码的字符,这样就可以正常编码为GBK了

print 你的字符串.encode(“GBK“,’ignore‘);

最后

以上就是可爱书包为你收集整理的windows下python爬虫编码格式报错解决方案的全部内容,希望文章能够帮你解决windows下python爬虫编码格式报错解决方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部