11

如何从蜘蛛回调中收集统计信息?

例子

class MySpider(Spider):
     name = "myspider"
     start_urls = ["http://example.com"]

def parse(self, response):
    stats.set_value('foo', 'bar')

一般不确定要提供什么import或如何stats提供。

4

4 回答 4

17

从 scrapy 文档中查看统计信息页面。文档说明了 Stats Collector,但可能需要添加from scrapy.stats import stats到您的蜘蛛代码中才能使用它。

编辑:冒着吹我自己的小号的风险,如果你在一个具体的例子之后,我发布了一个关于如何收集失败网址的答案

EDIT2:经过大量谷歌搜索,显然不需要进口。只需使用self.crawler.stats.set_value()

于 2014-04-09T07:57:05.513 回答
3

使用scrapy 0.24 - stats我通过以下方式使用它:

class TopSearchesSpider(CrawlSpider):
    name = "topSearches"
    allowed_domains = ["...domain..."]

    start_urls = (
        'http://...domain...',
    )

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

    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler.stats)

    def parse_start_url(self, response):
        sel = Selector(response);
        url = response.url;

        self.stats.inc_value('pages_crawled')
        ...

super方法是调用 CrawlSpider 构造函数来执行自己的代码。

于 2015-06-10T13:55:48.057 回答
2

在你的蜘蛛类中添加这个

def my_parse(self, response): 
    print self.crawler.stats.get_stats()
于 2017-02-17T14:15:54.193 回答
0

如果你想在其他地方使用,你可以:

spider.crawler.stats.get_stats()

于 2018-11-12T11:11:39.253 回答