Wiąże się to Modifiying CSV export in scrapy
Problem polega na tym, że eksporter jest tworzony bez żadnych parametrów słów kluczowych, więc słowa kluczowe, takie jak EXPORT_FIELDS są ignorowane. Rozwiązanie jest takie samo: musisz podklasę eksportera elementów CSV, aby przekazać parametry słów kluczowych.
następstwie powyższego przepisu, stworzyłem nowy plik xyzzy/feedexport.py (zmiana "xyzzy", aby niezależnie od klasy scrapy nazywa):
"""
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)
i dodaje go do xyzzy/settings.py :
FEED_EXPORTERS = {
'csv': 'xyzzy.feedexport.CSVkwItemExporter'
}
teraz eksporter CSV uhonoruje ustawienie EXPORT_FIELD - również dodać do 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',
]
widzę ten post jest już dość stary. Czy ten problem został rozwiązany w prostszy sposób w nowszej wersji? – not2qubit
Tak, zobacz następną odpowiedź – Toilal