在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 數(shù)據(jù)收集(Stats Collection)
Benchmarking
命令行工具(Command line tools)
下載器中間件(Downloader Middleware)
信號(Signals)
Telnet 終端(Telnet Console)
初窺 Scrapy
數(shù)據(jù)收集(Stats Collection)
Scrapyd
通用爬蟲(Broad Crawls)
Item Loaders
試驗階段特性
Scrapy 入門教程
自動限速(AutoThrottle)擴展
Settings
Scrapy 終端(Scrapy shell)
下載項目圖片
DjangoItem
調試(Debugging)Spiders
選擇器(Selectors)
Feed exports
Spiders Contracts
借助 Firefox 來爬取
Logging
Spiders
Ubuntu 軟件包
實踐經(jīng)驗(Common Practices)
安裝指南
Item Exporters
擴展(Extensions)
Items
Spider 中間件(Middleware)
異常(Exceptions)
例子
發(fā)送 email
架構概覽
常見問題(FAQ)
Jobs:暫停,恢復爬蟲
核心 API
使用 Firebug 進行爬取
Item Pipeline
Link Extractors
Web Service
調試內存溢出

數(shù)據(jù)收集(Stats Collection)

Scrapy 提供了方便的收集數(shù)據(jù)的機制。數(shù)據(jù)以 key/value 方式存儲,值大多是計數(shù)值。 該機制叫做數(shù)據(jù)收集器(Stats Collector),可以通過 Crawler API 的屬性 stats 來使用。在下面的章節(jié)常見數(shù)據(jù)收集器使用方法將給出例子來說明。

無論數(shù)據(jù)收集(stats collection)開啟或者關閉,數(shù)據(jù)收集器永遠都是可用的。因此您可以 import 進自己的模塊并使用其 API(增加值或者設置新的狀態(tài)鍵(stat keys))。該做法是為了簡化數(shù)據(jù)收集的方法: 您不應該使用超過一行代碼來收集您的 spider,Scrpay 擴展或任何您使用數(shù)據(jù)收集器代碼里頭的狀態(tài)。

數(shù)據(jù)收集器的另一個特性是(在啟用狀態(tài)下)很高效,(在關閉情況下)非常高效(幾乎察覺不到)。

數(shù)據(jù)收集器對每個 spider 保持一個狀態(tài)表。當 spider 啟動時,該表自動打開,當 spider 關閉時,自動關閉。

常見數(shù)據(jù)收集器使用方法

通過 stats 屬性來使用數(shù)據(jù)收集器。 下面是在擴展中使用狀態(tài)的例子:

class ExtensionThatAccessStats(object):

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

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

設置數(shù)據(jù):

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

增加數(shù)據(jù)值:

stats.inc_value('pages_crawled')

當新的值比原來的值大時設置數(shù)據(jù):

stats.max_value('max_items_scraped', value)

當新的值比原來的值小時設置數(shù)據(jù):

stats.min_value('min_free_memory_percent', value)

獲取數(shù)據(jù):

>>> stats.get_value('pages_crawled')
8

獲取所有數(shù)據(jù):

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

可用的數(shù)據(jù)收集器

除了基本的 StatsCollector,Scrapy 也提供了基于 StatsCollector 的數(shù)據(jù)收集器。 您可以通過 STATS_CLASS 設置來選擇。默認使用的是 MemoryStatsCollector。

MemoryStatsCollector

class scrapy.statscol.MemoryStatsCollector

一個簡單的數(shù)據(jù)收集器。其在 spider 運行完畢后將其數(shù)據(jù)保存在內存中。數(shù)據(jù)可以通過 spider_stats 屬性訪問。該屬性是一個以 spider 名字為鍵(key)的字典。

這是 Scrapy 的默認選擇。

spider_stats

保存了每個 spider 最近一次爬取的狀態(tài)的字典(dict)。該字典以 spider 名字為鍵,值也是字典。

DummyStatsCollector

class scrapy.statscol.DummyStatsCollector

該數(shù)據(jù)收集器并不做任何事情但非常高效。您可以通過設置 STATS_CLASS 啟用這個收集器,來關閉數(shù)據(jù)收集,提高效率。 不過,數(shù)據(jù)收集的性能負擔相較于 Scrapy 其他的處理(例如分析頁面)來說是非常小的。