gpt4 book ai didi

python - 如何将抓取的项目保存到多个 .jl 文件?

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:06 28 4
gpt4 key购买 nike

我想运行一个抓取工具,将不同类型的项目保存到单独的 JSON 行文件中。

我的 settings.py 有这个:

ITEM_PIPELINES = {
'permits.pipelines.PermitTypePipeline': 300,
'permits.pipelines.PermitNumberPipeline': 301,
}

我的 pipelines.py 有这个:

class PermitTypePipeline(object):
def process_item(self, item, spider):
return item

class PermitNumberPipeline(object):
def process_item(self, item, spider):
return item

items.py 有这个:

class PermitType(scrapy.Item):
permitWebCode= scrapy.Field()

class PermitNumber(scrapy.Item):
permitNumber= scrapy.Field()

my_spider.py 有这个:

def parse(self,response):
## Some scraper code here ...
yield PermitType(permitWebCode=someScrapedVariable)
yield PermitNumber(permitNumber=anotherScrapedVariable)

如何将生成的 PermitType 对象保存到 permit_types.jl 并将 PermitNumber 对象保存到 permit_number.jl?

最佳答案

一种相当直率但实用的方法是创建一个管道来识别生成的项目的类型,然后将其存储在相应的 json 文件中。它可能看起来像这样:

import json
import ClassA
import ClassB

class JsonWriterPipeline(object):

def close_spider(self, spider):
self.file.close()

def process_item(self, item, spider):
if type(item) is ClassA:
self.file = open('classA.jl', 'w')
elif type(item) is ClassB:
self.file = open('classB.jl', 'w')
else:
return item
line = json.dumps(dict(item)) + "\n"
self.file.write(line)
return item

告诉我这是否有效,因为我自己没有尝试过。

关于python - 如何将抓取的项目保存到多个 .jl 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49549440/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com