Scrapy输出文件格式问题汇总
Q:Scrapy抓取的内容(包含中文)输出到JSON Lines文件时如何确保输出的是字符本身而不是其unicode编码?
A:默认的JsonLinesItemExporter其ensure_ascii属性为True,使得在ASCII字符集中包含的字符才能输出字符本身,其他的字符(如各种东亚语言)则输出其unicode编码。在piplines.py中添加如下代码,将JsonLinesItemExporter的ensure_ascii设置为False。
class CustomJsonLinesItemExporter(JsonLinesItemExporter):
def __init__(self, file, **kwargs):
# 将超类的ensure_ascii属性设置为False, 确保输出中文而不是其unicode编码
super(CustomJsonLinesItemExporter, self).__init__(file, ensure_ascii=False, **kwargs)
Q:输出为csv文件时,Scrapy的CsvItemExporter输出的文件每行后面为何会多一行空行?
A:参考Stack Overflow
To fix this in Scrapy 1.3, you can patch it by adding newline='' as parameter to io.TextIOWrapper in the init method of the CsvItemExporter class in scrapy.exporters.