# 统计数据集合
> 译者:[OSGeo 中国](https://www.osgeo.cn/)
Scrapy提供了一种方便的工具,可以以键/值的形式收集统计信息,其中值通常是计数器。该工具称为stats collector,可以通过 [`stats`](api.html#scrapy.crawler.Crawler.stats "scrapy.crawler.Crawler.stats") 的属性 [爬虫API](api.html#topics-api-crawler) ,如中的示例所示 [常用统计信息收集器使用](#topics-stats-usecases) 下面部分。
但是,stats collector始终可用,因此无论stats集合是否启用,您都可以将其导入模块并使用其API(以增加或设置新的stat键)。如果它被禁用,API仍然可以工作,但它不会收集任何东西。这是为了简化StatsCollector的用法:在spider、scrappy扩展名或从中使用StatsCollector的任何代码中,收集统计信息的代码不应超过一行。
StatsCollector的另一个特性是,它在启用时非常高效,在禁用时非常高效(几乎不明显)。
stats收集器为每个打开的spider保留一个stats表,该表在spider打开时自动打开,在spider关闭时关闭。
## 常用统计信息收集器使用
通过访问Stats Collector [`stats`](api.html#scrapy.crawler.Crawler.stats "scrapy.crawler.Crawler.stats") 属性。以下是访问统计信息的扩展示例:
```py
class ExtensionThatAccessStats(object):
def __init__(self, stats):
self.stats = stats
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.stats)
```
设置统计值:
```py
stats.set_value('hostname', socket.gethostname())
```
增量统计值:
```py
stats.inc_value('custom_count')
```
仅当大于上一个值时设置stat值::
```py
stats.max_value('max_items_scraped', value)
```
仅当低于上一个时设置stat值::
```py
stats.min_value('min_free_memory_percent', value)
```
获取统计值:
```py
>>> stats.get_value('custom_count')
1
```
获取所有统计数据:
```py
>>> stats.get_stats()
{'custom_count': 1, 'start_time': datetime.datetime(2009, 7, 14, 21, 47, 28, 977139)}
```
## 可用的统计信息收集器
除了基本的 `StatsCollector` Scrapy中还有其他可用的统计数据收集器,它们扩展了基本统计数据收集器。您可以通过 [`STATS_CLASS`](settings.html#std:setting-STATS_CLASS) 设置。使用的默认统计信息收集器是 `MemoryStatsCollector` .
### MemoryStatsCollector
```py
class scrapy.statscollectors.MemoryStatsCollector
```
一个简单的统计信息收集器,它在关闭后将上次(每个 Spider )抓取运行的统计信息保存在内存中。可以通过 [`spider_stats`](#scrapy.statscollectors.MemoryStatsCollector.spider_stats "scrapy.statscollectors.MemoryStatsCollector.spider_stats") 属性,它是由 Spider 域名键入的dict。
这是Scrapy中使用的默认统计信息收集器。
```py
spider_stats
```
包含每个 Spider 最后一次抓取运行的统计信息的dict的dict(由 Spider 名称键控)。
### DummyStatsCollector
```py
class scrapy.statscollectors.DummyStatsCollector
```
一个只做非常有效的统计数据收集器(因为它什么也不做)。此统计信息收集器可以通过 [`STATS_CLASS`](settings.html#std:setting-STATS_CLASS) 设置,以禁用统计信息收集以提高性能。但是,与其他零碎的工作负载(如解析页面)相比,统计数据收集的性能损失通常是微乎其微的。
- 简介
- 第一步
- Scrapy at a glance
- 安装指南
- Scrapy 教程
- 实例
- 基本概念
- 命令行工具
- Spider
- 选择器
- 项目
- 项目加载器
- Scrapy shell
- 项目管道
- Feed 导出
- 请求和响应
- 链接提取器
- 设置
- 例外情况
- 内置服务
- Logging
- 统计数据集合
- 发送电子邮件
- 远程登录控制台
- Web服务
- 解决具体问题
- 常见问题
- 调试spiders
- Spider 合约
- 常用做法
- 通用爬虫
- 使用浏览器的开发人员工具进行抓取
- 调试内存泄漏
- 下载和处理文件和图像
- 部署 Spider
- AutoThrottle 扩展
- Benchmarking
- 作业:暂停和恢复爬行
- 延伸 Scrapy
- 体系结构概述
- 下载器中间件
- Spider 中间件
- 扩展
- 核心API
- 信号
- 条目导出器
- 其余所有
- 发行说明
- 为 Scrapy 贡献
- 版本控制和API稳定性