更改Scrapy JSON Outpu

2024-06-01 12:02:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在与Scrapy合作,从管道中的spider导出JSON。我想在产品对象中包装json。在

我正在使用JsonLinesItemExporter

目前,我的JSON如下所示:

{"name": "Protective iPhone Stand Case",
    "link": "https://things.com/899029978367138670/Strap-On-SoftRack-Roof-Rack-by-Otium",
    "category_old": "Sports & Outdoors",
    "image_url": "https://thingd-media-ec1.com/default/899029978367138670_42120cf10765.jpg",
    "price": "160",
    "interest": "13",
    "company": "ACME",
    "country": "USA"}

"product": {
    "name": "Protective iPhone Stand Case",
    "link": "https://things.com/899029978367138670/Strap-On-SoftRack-Roof-Rack-by-Otium",
    "category_old": "Sports & Outdoors",
    "image_url": "https://thingd-media-ec1.com/default/899029978367138670_42120cf10765.jpg",
    "price": "160",
    "interest": "13",
    "company": "ACME",
    "country": "USA"
}

那么如何在产品对象中包装它呢?在

这是我的管道代码:

^{pr2}$

Tags: 对象namehttpscomjson管道产品on
1条回答
网友
1楼 · 发布于 2024-06-01 12:02:38

我可以使用以下代码来完成此操作:

def spider_opened(self, spider):
        #open a static/dynamic file to read and write to
        file = open('%s_items.json' % spider.name, 'w+b')
        self.files[spider] = file
        file.write('''{
    "product": [''')
        self.exporter = JsonLinesItemExporter(file)
        self.exporter.start_exporting()

  def spider_closed(self, spider):
        self.exporter.finish_exporting()
        file = self.files.pop(spider)
        file.write("]}")
        file.close()

相关问题 更多 >