Это связано с Модификацией экспорта CSV в scrapy
Проблема заключается в том, что экспортер создается без каких-либо параметров ключевых слов, поэтому такие ключевые слова, как EXPORT_FIELDS, игнорируются.Решение одно и то же: вам нужно создать подкласс для экспортера элементов CSV, чтобы передать параметры ключевого слова.
Следуя приведенному выше рецепту, я создал новый файл xyzzy / feedexport.py (замените «xyzzy» на то, что вам нужно)имя класса):
"""
The standard CSVItemExporter class does not pass the kwargs through to the
CSV writer, resulting in EXPORT_FIELDS and EXPORT_ENCODING being ignored
(EXPORT_EMPTY is not used by CSV).
"""
from scrapy.conf import settings
from scrapy.contrib.exporter import CsvItemExporter
class CSVkwItemExporter(CsvItemExporter):
def __init__(self, *args, **kwargs):
kwargs['fields_to_export'] = settings.getlist('EXPORT_FIELDS') or None
kwargs['encoding'] = settings.get('EXPORT_ENCODING', 'utf-8')
super(CSVkwItemExporter, self).__init__(*args, **kwargs)
, а затем добавил его в xyzzy / settings.py:
FEED_EXPORTERS = {
'csv': 'xyzzy.feedexport.CSVkwItemExporter'
}
Теперь экспортер CSV будет соблюдать настройку EXPORT_FIELD - также добавьте в xyzzy / settings.py:
# By specifying the fields to export, the CSV export honors the order
# rather than using a random order.
EXPORT_FIELDS = [
'field1',
'field2',
'field3',
]