我有一个项目有一个排名字段,必须通过分析其他项目类来构建。我不想使用数据库或其他后端来存储它们 - 我只需要访问所有当前被删除的项目并对它们执行一些itertools魔法 - 我如何在蜘蛛完成之后但在导出数据之前执行此操作(因此获得了rank field不是空的吗?
答案 0 :(得分:4)
我认为信号可能有所帮助。我在这里做了类似的事情
https://github.com/dm03514/CraigslistGigs/blob/master/craigslist_gigs/pipelines.py
看起来有点hacky但是在你的蜘蛛中你可以创建一个属性来存储你所有的Scraped项目。在您的管道中,您可以注册一个方法来调用蜘蛛关闭信号。此方法将spider实例作为参数。然后,您可以访问包含所有已删除项目的spider属性
答案 1 :(得分:1)
此管道将确保所有项目都具有排名。
class MyPipeline(object):
def process_item(self, item, spider):
item['rank'] = item.get('rank') or '1'
return item