python - 具有多个蜘蛛和 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()
解决方案
你有几个选择:
- 每个蜘蛛都写在自己的文件上,然后将所有内容组合为一个单独的进程。
- 蜘蛛没有写入文件,而是有一个写入消息队列的项目管道,一个单独的进程使用队列中的消息并将其写入单个 CSV 文件。
推荐阅读
- sql - 使用连接计算值
- php - 了解 Laravel Passport 刷新令牌
- python - python中的RGB到HSV转换
- reactjs - 单击 React.js 从数组中删除值
- python - Python Regex:替换子字符串的多种可能性
- html - 如何在 Angular 中正确使用 ngif
- asp.net-core - 限制 Swagger 文档中生成示例的深度,或禁用示例
- ansible - 如何使用 JMESPATH 或 json_query 从 json 输出中过滤多个键值以在 ansible 中使用?
- c++ - 在 CodeBlocks 中查找输出文件
- python - 解压熊猫数据框的一部分