数据存储在.csv文件乱码,数据写入才一部分就报错'gbk' codec can't encode character '\xee' in position 45: illegal multibyte

使用python爬虫爬取规则数据后转化成来List格式,将其存储在.csv 文件中
使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position … 这个问题。 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的。 很多时候,我们使用了decode和encode,试遍了各种编码,utf8,utf-8,gbk,gb2312等等,该有的编码都试遍了,可是编译的时 候仍然出现: UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position XXX。 崩溃了。

我遇到的问题:

1.使用open("xxxx.csv",'w',newline='',encoding='utf-8')把数据存储在csv文件后,能够全部存储,但是乱码了,猜测是编码集不匹配造成的

2.使用open("xxxx.csv",'w',newline='',encoding='gbk')把数据存储在csv文件后,只能存储list集合中前面几个数据,中途终止且报错UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position XXX,猜测原因:数据中包含一些gbk无法显示的字符,导致报错说gbk无法编码。


【解决办法】
方案1:
在对unicode字符编码时,添加ignore参数,忽略无法无法编码的字符,这样就可以正常编码为GBK了。
对应代码为:
print myUnWebItems.encode(“GBK“, ‘ignore’);
方案2:
或者,因为gbk有显示不了的字符,那么使用GBK编码的超集GB18030 (即,GBK是GB18030的子集):


诸事顺利了


你可能感兴趣的:(爬虫学习)