带有多个Spider和CSVItemExporter的Scrapy CSV标头行格式

时间:2018-12-13 04:56:09

标签: python python-3.x web-scraping scrapy scrapy-spider

我正在运行四个蜘蛛并将数据导出到一个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 :(得分:0)

您有几种选择:

  1. 每个蜘蛛都在自己的文件上写入内容,然后将所有内容作为一个单独的过程结尾。
  2. 蜘蛛程序没有写入文件,而是具有一个项目管道,该管道可以写入消息传递队列,并且一个单独的进程使用队列中的消息并写入单个CSV文件。