我有多个蜘蛛同时运行的scrapyd服务器,我使用 schedule.json 端点一一启动蜘蛛。所有蜘蛛都使用管道在公共文件上写入内容
class JsonWriterPipeline(object):
def __init__(self, json_filename):
# self.json_filepath = json_filepath
self.json_filename = json_filename
self.file = open(self.json_filename, 'wb')
@classmethod
def from_crawler(cls, crawler):
save_path='/tmp/'
json_filename=crawler.settings.get('json_filename', 'FM_raw_export.json')
completeName = os.path.join(save_path, json_filename)
return cls(
completeName
)
def process_item(self, item, spider):
line = json.dumps(dict(item)) + "\n"
self.file.write(line)
return item
蜘蛛运行后,我可以看到它们如何正确收集数据,项目存储在 XXXX.jl 文件中,并且蜘蛛正常工作,但是爬取的内容没有反映在公共文件上。Spiders 似乎运行良好,但管道并没有很好地完成它们的工作,并且没有将数据收集到公共文件中。
我还注意到只有一只蜘蛛同时在文件上写。