统计收藏

Scrapy提供了一种方便的方法,用于以键/值的形式收集统计数据,其中值通常是计数器。该工具称为统计收集器,可以通过Crawler API的stats属性来访问,如通用统计信息收集器使用的部分中的示例所示。

但是,Stats Collector总是可用的,所以您可以随时将其导入到模块中,并使用其API(增加或设置新的统计键),而不管统计信息集合是否启用。如果禁用,API仍然可以工作,但不会收集任何内容。这是为了简化统计数据收集器的使用情况:您应该花费不超过一行代码来收集蜘蛛中的统计信息,Scrapy扩展或您使用统计信息收集器的任何代码。

统计收集器的另一个特点是,禁用时非常有效(启用时)和非常高效(几乎不明显)。

统计收集者保持每个打开的蜘蛛的统计表,当蜘蛛打开时自动打开,并在蜘蛛关闭时关闭。

普通统计数据收集器使用

通过stats属性访问统计数据收集器。以下是访问统计信息的扩展的示例:

class ExtensionThatAccessStats(object):

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

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

设置统计值:

stats.set_value('hostname',socket.gethostname())

增量统计值:

stats.inc_value( 'custom_count')

仅在大于以前设置统计值时:

stats.max_value('max_items_scraped',value)

仅在低于以前的值时设置统计值:

stats.min_value('min_free_memory_percent',value)

获取统计值:

>>> stats.get_value('custom_count')
1

获取所有统计信息:

>>> stats.get_stats()
{'custom_count':1,'start_time':datetime.datetime(2009,7,14,21,47,28,977139)}

可用统计收藏家

除了基本的StatsCollector之外,还有其他Stays Collector可用于Scrapy,它们扩展了基本的Stats Collector。您可以通过STATS_CLASS设置选择要使用的统计信息收集器。使用的默认Stats Collector是MemoryStatsCollector。

MemoryStatsCollector

class scrapy.statscollectors.MemoryStatsCollector

一个简单的统计数据收集器,在关闭后将内存中最后一次刮擦运行的统计信息(每个蜘蛛)保留在内存中。可以通过spider_stats属性访问统计信息,spider_stats属性是由蜘蛛域名键入的dict。

这是Scrapy中使用的默认Stats Collector。

spider_stats

包含每个蜘蛛的最后一次刮擦运行的统计数据(由蜘蛛名称键入)的命令。

DummyStatsCollector

class scrapy.statscollectors.DummyStatsCollector

一个统计收集器什么也不做,但效率非常高(因为它什么都不做)。可以通过STATS_CLASS设置设置此统计信息收集器,以禁用统计信息收集功能,以提高性能。然而,与其他Scrapy工作负载(如解析页面)相比,统计数据收集的性能损失通常是很小的。

results matching ""

    No results matching ""