scrapy資料收集器資料遠端獲取

2021-08-21 17:29:38 字數 2433 閱讀 1050

scrapy的資料收集器可以實時記錄爬蟲狀態資料,預設在爬蟲結束是列印:

c:\anaconda2\lib\site-packages\scrapy\statscollectors.py

class statscollector(object):

def __init__(self, crawler):

self._dump = crawler.settings.getbool('stats_dump')

self._stats = {}

......

def close_spider(self, spider, reason):

if self._dump:

logger.info("dumping scrapy stats:\n" + pprint.pformat(self._stats),

extra=)

self._persist_stats(self._stats, spider)

def _persist_stats(self, stats, spider):

pass

上面是資料收集器的原始碼,可以看到在close_spider中會將self._stats列印出來,預設收集的資訊如下。 

結束時:

結束時會有finish_reason,finish_time兩個值,在執行時沒有。

資料收集器允許新增開發者收集自定義資料:

在spider中:

self.crawler.stats.set_value("login_faild", false)
在middleware和pipeline中:

spider.crawler.stats.set_value("login_faild", false)
進入正題如何遠端獲取收集器中的資料

第一種:儲存後獲取,在downloadmiddleware中將狀態資訊寫入redis中,在讀取:

import redis

import time

import requests

class statcollectormiddleware(object):

def __init__(self):

self.r = redis.redis(host='localhost', port=6379, db=0)

self.time = lambda: time.strftime('%y-%m-%d %h:%m:%s')

def process_request(self, request, spider):

stats = spider.crawler.stats.get_stats()

for key, value in stats.items():

value =

self.insert2redis(key, value)

def insert2redis(self, key, value):

self.r.rpush(key, value)

第二種:使用telnet console獲取,首先配置setting,允許外網訪問,記得開啟6023埠,

telnetconsole_host = '0.0.0.0'

telnetconsole_port = [6023, 6073]

預設配置

telnetconsole_host = '127.0.0.1'

telnetconsole_port = [6023, 6073]

然後使用

import telnetlib

tn = telnetlib.telnet('192.168.2.89', port=6023, timeout=10)

tn.write('stats.get_stats()'+'\n')

tn.read_very_eager()

結果:

in [1]: import telnetlib

in [2]: tn = telnetlib.telnet('192.168.2.89', port=6023, timeout=10)

in [3]: tn.write('stats.get_stats()'+'\n')

in [4]: stat = tn.read_very_eager()

in [5]: print stat

>>> stats.get_stats()

>>>

當有多個爬蟲時可以將埠配置在spider中,避免衝突:

custom_settings =
這樣就可以在遠端獲取狀態資訊了,雖然是在區域網測試,但是外網同樣可以。

JVM垃圾收集器之CMS收集器

cms concurrent mark sweep 收集器是一種以獲取最短 停頓時間為目標的收集器。1 cms使用的演算法 cms使用的演算法為 標記 清除 演算法 2 執行過程4步驟 a 初始標記 cms initial mark b 併發標記 cms concurrent mark c 重新標記...

scrapy 資料收集

什麼是資料收集器?資料以key value形式存在,收集一些狀態,簡化資料收集的狀態 計算到底傳送了多少request等等統計資訊 如何對404頁面進行設定?通過response.status等於判斷狀態是否為404,然後把失敗的url新增到初始化的失敗列表中,設定失敗計數收集器 在spider類邏...

並行收集器

預設情況下伺服器上選擇並行收集器。1 並行收集器 這裡也稱為吞吐量收集器 是類似於序列收集器的分代收集器 主要區別在於多個執行緒用於加速垃圾收集。使用命令列選項啟用並行收集器 xx useparallelgc。2 可以使用命令列選項控制垃圾收集器執行緒的數量 xx parallelgcthreads...