# 統計數據集合
> 譯者:[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穩定性