python scrapy csv 设定表头顺序

网上搜出来的、通过创建类的办法调用settings属性并指定表头顺序的案例过时了。scrapy1.6之后已经没有scrapy.conf 和scrapy.scrapy.contrib。

以下是2021.10月更新的代码

#在spiders文件夹下创建py文件,代码如下:

from scrapy.utils.project import get_project_settings
from scrapy.exporters import CsvItemExporter

class MyProjectCsvItemExporter(CsvItemExporter):
    settings=get_project_settings()

    def __init__(self, *args, **kwargs):
        delimiter = settings['CSV_DELIMITER']
        kwargs['delimiter'] = delimiter

        fields_to_export = settings['FIELDS_TO_EXPORT']
        if fields_to_export :
            kwargs['fields_to_export'] = fields_to_export

        super(MyProjectCsvItemExporter, self).__init__(*args, **kwargs)

#在settings中增加变量FIELDS_TO_EXPORT,值为列表,列表里放入按需排序的item名字

FIELDS_TO_EXPORT = [
    'name',
    'name_url',
    'salary',
    'properties',
    'description',
    'company',
    'company_url'
    ]

运行后,csv表头就从默认的字母排序变成指定顺序:


版权声明:本文为make_all_real原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。