我以json格式输出scrapy数据。默认scrapy导出器以json格式输出dict列表。项目类型如下所示:
[{"Product Name":"Product1", "Categories":["Clothing","Top"], "Price":"20.5", "Currency":"USD"},
{"Product Name":"Product2", "Categories":["Clothing","Top"], "Price":"21.5", "Currency":"USD"},
{"Product Name":"Product3", "Categories":["Clothing","Top"], "Price":"22.5", "Currency":"USD"},
{"Product Name":"Product4", "Categories":["Clothing","Top"], "Price":"23.5", "Currency":"USD"}, ...]
但我想以如下的特定格式导出数据:
{
"Shop Name":"Shop 1",
"Location":"XXXXXXXXX",
"Contact":"XXXX-XXXXX",
"Products":
[{"Product Name":"Product1", "Categories":["Clothing","Top"], "Price":"20.5", "Currency":"USD"},
{"Product Name":"Product2", "Categories":["Clothing","Top"], "Price":"21.5", "Currency":"USD"},
{"Product Name":"Product3", "Categories":["Clothing","Top"], "Price":"22.5", "Currency":"USD"},
{"Product Name":"Product4", "Categories":["Clothing","Top"], "Price":"23.5", "Currency":"USD"}, ...]
}
有什么办法请指教。谢谢。
4条答案
按热度按时间ix0qys7i1#
这是很好的记录在scrapy网页这里。
这将创建一个包含您的项的json文件。
irtuqstp2#
我试图导出漂亮的JSON,这对我很有效。
我创建了一个管道,如下所示:
它与scrappy docs https://doc.scrapy.org/en/latest/topics/item-pipeline.html中的示例类似,不同之处在于它将每个JSON属性缩进并打印在新的一行上。
请在此处查看有关漂亮打印的部分https://docs.python.org/2/library/json.html
qvk1mo1f3#
还有一种可能的解决方案是直接从命令行直接从spider在json中生成spider输出。
mm5n2pyu4#
另一种从scrapy spider获取抓取/爬行输出的json导出的方法是启用feed导出,内置的功能,这些功能在scrappy类中提供,可以根据需要启用或禁用。可以通过定义custom_settings来实现这一点(覆盖)。这最终覆盖了这个特定蜘蛛的整体scrapy项目设置。
因此,对于任何名为“sample_spider”的蜘蛛: