前面爬取数据在控制台打印没有问题,检查HTML文档的编码格式也是UTF-8,编译器格式也是UTF-8,但在写入时,报错。代码如下:
with open('../xx信息.csv','w',newline='')as f:
wr = csv.DictWriter(f,fieldnames=['书名','作者','出版社','ISBN','页数','出版年','定价'])
wr.writeheader()
wr.writerows(sj_list)
报错信息: UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\u2022’ in position 16: illegal multibyte sequence
csv文件在写入时,编码格式变成了gbk格式,utf-8与gbk编码格式冲突,所以造成了乱码现象
添加encoding定义编码格式,格式为:encoding=‘utf-8-sig’。问题解决。
需要注意:
如果是encoding=‘utf-8’ 没加sig的话,虽然不报错,但打开的文档内部是乱码,需要改为encoding='utf-8-sig’就可以正常。