Формат строки заголовка Scrapy CSV с несколькими пауками и CSVItemExporter - PullRequest
0 голосов
/ 13 декабря 2018

Я использую четыре паука и экспортирую данные в один CSV-файл.Однако, когда второй паук запускает его и получает данные, он создает ту же строку с именами столбцов.Я попытался отформатировать заголовок строки с помощью FEED_EXPORT_FIELDS, но это не сработало.

Что я хочу сделать, так это иметь 1 заголовок строки и заполнить все данные под ним для каждого паука.На рисунке показана ошибка, и ниже я привел пример того, чего я хочу достичь.

Я посмотрел на CsvItemExporter, но не ясно, как мне получить данные со всех четырех пауков и экспортировать данные.Я прочитал документацию, но все еще не понимаю, как бы связать все это вместе.

TMP_FILE = os.path.join(os.path.dirname(sys.modules['products'].__file__), 'tmp/allproducts.csv')
FIELDS = ['url', 'company', 'location', 'price', 'make', 'model', 'year', 'height']

process = CrawlerProcess({
    'FEED_FORMAT': 'csv',
    'FEED_URI': TMP_FILE,
    'FEED_EXPORT_FIELDS': FIELDS,
})
process.crawl(Spider1)
process.crawl(Spider2)
process.start()

enter image description here

1 Ответ

0 голосов
/ 13 декабря 2018

У вас есть несколько вариантов:

  1. Каждый паук записывает свой собственный файл, а затем вы объединяете все как конец в отдельный процесс.
  2. Вместо записи в файлу пауков есть конвейер элементов, который записывает в очередь сообщений, а отдельный процесс получает сообщения из очереди и записывает их в один файл CSV.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...