python-scrapy在扩展中设置stats值

时间:2013-09-04 15:09:44

标签: python scrapy

我正在尝试编写一个简单的scrapy扩展类来在蜘蛛通过电子邮件关闭时发送crawler-stats。这是我到目前为止,它工作正常。

class SpiderClosedCommit(object):

    def __init__(self, stats):
        self.stats = stats

    @classmethod
    def from_crawler(cls, crawler):
        ext = cls(crawler.stats)
        crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)
        return ext

    def spider_closed(self, spider):
        spider_stats = self.stats.get_stats(spider)
        # some more code to send an email with stats ...

但是现在我想弄清楚如何使用被抓取的域向统计信息添加列表。我查看了文档,但我无法弄清楚代码应该是什么样子以及放在哪里,在扩展中或在蜘蛛类中。如何访问扩展类中的已删除域,或者如何访问spider类中的统计信息?

提前致谢并且一切顺利

雅克

1 个答案:

答案 0 :(得分:2)

这是一种方法:

  1. 使您的扩展程序挂钩response_received信号并从response.url
  2. 中提取域名
  3. 在您的扩展程序中保留set()
  4. 相关的域名
  5. 关闭蜘蛛时,请先将这些域添加到spider_stats,然后再通过电子邮件发送