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()
我在 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()