今天跟着http://python.jobbole.com/89091/学习了一下爬虫扒取网易云音乐的歌单,但是发现个问题就是,用csv储存自己扒取的信息时,总会弹出'gbk' codec can't encode character ‘\xa0‘的错误,搜索得到这个网页https://blog.csdn.net/wangbowj123/article/details/78061618发现\xa0是不间断空白符
采取了split和join的方法,以为没有关系了,发现弹出'gbk' codec can't encode character '\u266a,没办法,才考虑编码的问题。
gbk的话应该是win7系统默认,excel写入的时候的编码方式。于是我在想是不是扒取的信息中有些gbk是不包含的,因为debug时候发现是在一个有好多符号的歌单名字时报错的,于是我就改成了这样
csv_file=open("playlist.csv","w",encoding='utf-8',newline='')
本来跑了一遍程序没报错,以为解决了,但是一打开csv发现全是不认识的乱码汉字,搜了一下看到有人说把获取的字符串先decode称Unicode在encode成gbk,但是如果utf-8能完全转到gbk,为什么不直接在open时候直接恩codeing改成gbk呢,所以这么做肯定不对。那要不更改个编码?那就弄个升级版,我试了一下这个
csv_file=open("playlist.csv","w",encoding='gb18030',newline='')
发现成功了,这是怎么回事呢?查看了一下发现excel打开是出现中文乱码是因为excel能够正确识别用gb2312、gbk、gb18030或utf_8 with BOM 编码的中文,如果是utf_8 no BOM编码的中文文件,excel打开会乱码。所以不光是gb18030,utf_8_sig也可以解决。
最后求关注,求点赞,欢迎大家关注我的公众号
记录所学所用,包括但不限于遥感、地信、气象、生态环境,机器学习知识,相关文献阅读,编程代码实现。偶尔荒腔走板的聊聊其他。欢迎不同领域的朋友们加入进来,多多交流。