如何访问Scrapy项目管道中的所有已删除项目?

时间:2012-10-07 11:04:42

标签: python scrapy

我有一个项目有一个排名字段,必须通过分析其他项目类来构建。我不想使用数据库或其他后端来存储它们 - 我只需要访问所有当前被删除的项目并对它们执行一些itertools魔法 - 我如何在蜘蛛完成之后但在导出数据之前执行此操作(因此获得了rank field不是空的吗?

2 个答案:

答案 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