Подтвердить что ты не робот

Экспорт csv файла из scrapy (не через командную строку)

Я успешно попытался экспортировать свои элементы в файл csv из командной строки, например:

   scrapy crawl spiderName -o filename.csv

Мой вопрос: Какое самое простое решение сделать в коде? Мне нужно это, поскольку я извлекаю имя файла из другого файла. Конец сценария должен быть, я звоню

  scrapy crawl spiderName

и он записывает элементы в filename.csv

4b9b3361

Ответ 1

Почему бы не использовать конвейер элементов?

WriteToCsv.py

   import csv
   from YOUR_PROJECT_NAME_HERE import settings

   def write_to_csv(item):
       writer = csv.writer(open(settings.csv_file_path, 'a'), lineterminator='\n')
       writer.writerow([item[key] for key in item.keys()])

   class WriteToCsv(object):
        def process_item(self, item, spider):
            write_to_csv(item)
            return item

settings.py

   ITEM_PIPELINES = { 'project.pipelines_path.WriteToCsv.WriteToCsv' : A_NUMBER_HIGHER_THAN_ALL_OTHER_PIPELINES}
   csv_file_path = PATH_TO_CSV

Если вы хотите, чтобы элементы были записаны для разделения csv для отдельных пауков, вы можете дать вашему паучу поле CSV_PATH. Затем в вашем конвейере используйте поле ваших пауков вместо пути от setttigs.

Это работает, я тестировал его в своем проекте.

НТН

http://doc.scrapy.org/en/latest/topics/item-pipeline.html

Ответ 2

То, что предоставляет Feed Exports для: http://doc.scrapy.org/en/latest/topics/feed-exports.html

Одной из наиболее часто требуемых функций при реализации скреперов является возможность правильно хранить скребковые данные, и довольно часто это означает создание "файла экспорта" со скребковыми данными (обычно называемыми "фид экспорта" ), которые должны быть использованы другими системами.

Scrapy предоставляет эту функциональность из коробки с помощью Feed Exports, которая позволяет вам создавать фид со скребками, используя несколько форматов сериализации и хранилища.