Python Scrapy Pipeline 编辑最后一项?

Python Scrapy Pipeline Edit Last Item?

我在 Scrapy 中使用管道将抓取的结果输出到 JSON 文件中。管道在每个被抓取的项目之后放置一个逗号但是,我想删除最后一个项目的逗号。有办法吗?

这是管道:

class ExamplePipeline(object):
def open_spider(self, spider):
    self.file = open('example.json', 'w')
    self.file.write("[")

def close_spider(self, spider):
    self.file.write("]")
    self.file.close()

def process_item(self, item, spider):
    line = json.dumps(
        dict(item),
        indent = 4,
        sort_keys = True,
        separators = (',', ': ')
    ) + ",\n"
    self.file.write(line)
    return item

样本输出如下:

[
{
    "item1": "example",
    "item2": "example"
},
{
    "item1": "example",
    "item2": "example"
},
]

什么是 python 找到最后一项而不给它逗号分隔符的方法?我以为我可以做类似 if item[-1] ... 的事情,但我无法让它工作。

有什么想法吗?

要将此应用于您的管道,您必须在文件中查找并删除该逗号:

查看相关内容Python - Remove very last character in file

class ExamplePipeline(object):

    def close_spider(self, spider):
        # go back 2 characters: \n and ,
        self.file.seek(-2, os.SEEK_END)
        # cut trailing data
        self.file.truncate()
        # save
        self.file.write("]")
        self.file.close()