scrapy导出csv时字段的一些问题

scrapy -o csv格式输出的时候,发现输出文件中字段的顺序不是按照items.py中的顺序,也不是爬虫文件中写入的顺序,这样导出的数据因为某些字段变得不好看,此外,导出得csv文件不同的item之间被空行隔开,本文主要描述解决这些问题的方法。

1.字段顺序问题:

  1. 需要在scrapy的spiders同层目录,新建csv_item_exporter.py文件内容如下(文件名可改,目录定死)
    from scrapy.conf import settings
    from scrapy.contrib.exporter import CsvItemExporter

class MyProjectCsvItemExporter(CsvItemExporter):
def init(self, *args, **kwargs):
delimiter = settings.get(‘CSV_DELIMITER’, ‘,’)
kwargs[‘delimiter’] = delimiter
fields_to_export = settings.get(‘FIELDS_TO_EXPORT’, [])
if fields_to_export :
kwargs[‘fields_to_export’] = fields_to_export
super(MyProjectCsvItemExporter, self).init(*args, **kwargs)

2)在settings.py中新增以下内容
#定义输出格式
FEED_EXPORTERS = {
‘csv’: ‘project_name.spiders.csv_item_exporter.MyProjectCsvItemExporter’,
}
#指定csv输出字段的顺序
FIELDS_TO_EXPORT = [
‘name’,
‘title’,
‘info’
]
#指定分隔符
CSV_DELIMITER = ‘,’

设定完毕,执行scrapy crawl spider -o spider.csv的时候,字段就按顺序来了

2.输出csv有空行的问题
此时你可能会发现csv文件中有空行,这是因为scrapy默认输出时,每个item之间的分隔符是空行
解决办法:
在找到exporters.py的CsvItemExporter类,大概在215行中增加newline="",即可。
也可以继承重写CsvItemExporter类

你可能感兴趣的:(scrapy导出csv时字段的一些问题)