今天使用Python(我的python版本是3.6)的Scrapy(版本1.5.0)框架爬了一些数据,当我通过scrapy crawl qs -o qius.csv
命令把数据导出来保存成csv文件打开时发现里面是乱码而且带空行所以就研究一下如何解决这个问题, 给遇到相同问题的朋友提供一个参考。
关于乱码我是这样解决的(两个方法):
(1) 可以使用notepad++, editplus等文本编辑器将 文档 的编码转为UTF-8 BOM
形式, 例如这样:
(2) 修改scrapy的源代码
我的scrapy源码目录D:\Python36\Lib\site-packages\scrapy\exporters.py
class CsvItemExporter(BaseItemExporter):
def __init__(self, file, include_headers_line=True, join_multivalued=',', **kwargs):
self._configure(kwargs, dont_fail=True)
if not self.encoding:
self.encoding = 'gbk' # windows改为gbk
关于空行的问题我是这样解决的:
同一个文件exporters.py
的同一位置
class CsvItemExporter(BaseItemExporter):
def __init__(self, file, include_headers_line=True, join_multivalued=',', **kwargs):
...
self.stream = io.TextIOWrapper(
file,
newline="", # 新添加的
line_buffering=False,
write_through=True,
encoding=self.encoding
) if six.PY3 else file