首页 > 解决方案 > 具有多个蜘蛛和 CSVItemExporter 的 Scrapy CSV 标题行格式

问题描述

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

在此处输入图像描述

标签: pythonpython-3.xweb-scrapingscrapyscrapy-spider

解决方案


你有几个选择:

  1. 每个蜘蛛都写在自己的文件上,然后将所有内容组合为一个单独的进程。
  2. 蜘蛛没有写入文件,而是有一个写入消息队列的项目管道,一个单独的进程使用队列中的消息并将其写入单个 CSV 文件。

推荐阅读