W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Scrapy提供了一種方便的工具,可以以鍵/值的形式收集統(tǒng)計信息,其中值通常是計數(shù)器。該工具稱為stats collector,可以通過 ?stats
? 的屬性 爬蟲API ,如中的示例所示 常用統(tǒng)計信息收集器使用 下面部分。
但是,stats collector始終可用,因此無論stats集合是否啟用,您都可以將其導入模塊并使用其API(以增加或設置新的stat鍵)。如果它被禁用,API仍然可以工作,但它不會收集任何東西。這是為了簡化StatsCollector的用法:在spider、scrappy擴展名或從中使用StatsCollector的任何代碼中,收集統(tǒng)計信息的代碼不應超過一行。
StatsCollector的另一個特性是,它在啟用時非常高效,在禁用時非常高效(幾乎不明顯)。
stats收集器為每個打開的spider保留一個stats表,該表在spider打開時自動打開,在spider關閉時關閉。
通過訪問Stats Collector ?stats? 屬性。以下是訪問統(tǒng)計信息的擴展示例:
class ExtensionThatAccessStats:
def __init__(self, stats):
self.stats = stats
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.stats)
設置統(tǒng)計值:
stats.set_value('hostname', socket.gethostname())
增量統(tǒng)計值:
stats.inc_value('custom_count')
僅當大于上一個值時設置stat值::
stats.max_value('max_items_scraped', value)
僅當?shù)陀谏弦粋€時設置stat值::
stats.min_value('min_free_memory_percent', value)
獲取統(tǒng)計值:
>>> stats.get_value('custom_count')
1
獲取所有統(tǒng)計信息:
>>> stats.get_stats()
{'custom_count': 1, 'start_time': datetime.datetime(2009, 7, 14, 21, 47, 28, 977139)}
除了基本的 ?StatsCollector Scrapy
?中還有其他可用的統(tǒng)計數(shù)據(jù)收集器,它們擴展了基本統(tǒng)計數(shù)據(jù)收集器。您可以通過 ?STATS_CLASS
? 設置。使用的默認統(tǒng)計信息收集器是 ?MemoryStatsCollector
? .
scrapy.statscollectors.
MemoryStatsCollector
一個簡單的統(tǒng)計信息收集器,它在關閉后將上次(每個蜘蛛)抓取運行的統(tǒng)計信息保存在內(nèi)存中??梢酝ㄟ^ ?spider_stats
? 屬性,它是由蜘蛛域名鍵入的dict。
這是Scrapy中使用的默認統(tǒng)計信息收集器。
spider_stats
包含每個蜘蛛最后一次抓取運行的統(tǒng)計信息的dict的dict(由蜘蛛名稱鍵控)。
scrapy.statscollectors.
DummyStatsCollector
一個只做非常有效的統(tǒng)計數(shù)據(jù)收集器(因為它什么也不做)。此統(tǒng)計信息收集器可以通過 ?STATS_CLASS
? 設置,以禁用統(tǒng)計信息收集以提高性能。但是,與其他零碎的工作負載(如解析頁面)相比,統(tǒng)計數(shù)據(jù)收集的性能損失通常是微乎其微的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: