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