拡張scrapyを提供することで、我々はいくつかのカスタム関数を記述することができ、メカニズムはscrapyに挿入します
まず、単純な拡張を書きます
現在のアイテムの合計数を取得するための拡張機能の数を書き
、我々は作成することができますがextensions.py
#extendsions.py #- * -コーディング:UTF-8 - * - から scrapy インポート信号 から scrapy.exceptionsがインポートNotConfigured クラスStatsItemCount(オブジェクト): デフ __init__ (自己): self.item_count = 0 @classmethod DEF from_crawler(CLSをクローラ): #インスタンス化拡張オブジェクト EXT = CLS() #は、信号に拡張オブジェクトを接続 (ext.spider_opened、crawler.signals.connect 信号 =をsignals.spider_opened) crawler.signals.connect(ext.spider_closed、 信号 = signals.spider_closed) crawler.signals.connect(ext.item_scraped、信号 = signals.item_scraped) #は拡張オブジェクトリターン 戻りextは DEF spider_opened(自己、クモ) : spider.logger.info(" -----------クモ%sの開いた" spider.name、) デフspider_closed(自己、クモ): spider.logger.info(" ------ ------閉じクモ%S "spider.name) spider.logger.info("取得されたデータの合計{} 」.format(self.item_count)) DEFは:(セルフ、アイテム、スパイダー)item_scraped self.item_countの + 1 =を。
from_crawler
登録処理信号- 書く
item_scraped
方法、すべての項目アウトの統計解析 - では
spider_closed
、出力データのクロール
オープン拡張子:
#settings.py EXTENSIONS = { ' ccidcom.extensions.StatsItemCount ':999 、 }
実行爬虫類scrapy crawl ccidcomSpider
... 2019年11月21日16時53分23秒[ccidcomSpider] INFO:----------- 開かれたクモccidcomSpider 2019年11月21日16時53分23秒[scrapy.extensions.telnet] INFO :127.0.0.1:6023上のTelnetコンソールリスニング 2019年11月21日午前16時53分23秒[scrapy.core.engine] INFO:閉会蜘蛛(完成品) 2019年11月21日午前16時53分23秒[ccidcomSpider] INFO: - ----------- クローズクモccidcomSpider 2019年11月21日夜4時53分23秒[ccidcomSpider] INFO:一共获取到10条数据 ...
それは拡張を書く代わりに、クモ、ミドルウェア、プロジェクト全体より混乱、良いスケーラビリティを書くには、はっきりと見ることができます
二、scrapyは内蔵の拡張
1.統計ドキュメントの拡張子
scrapy.extensions.logstats.LogStatsの
レコード統計
2.コア統計情報拡張
scrapy.extensions.corestats.CoreStats
コア統計情報統計情報は、LogStatsを有効にする必要があり、この拡張機能は有効です。
3. telnetのデバッグ機能拡張
scrapy.extensions.telnet.TelnetConsoleは
試運転後爬虫類でこれについての詳細を言っては、telnet爬虫類のデバッグを提供します
4.拡張メモリ使用量の監視
scrapy.extensions.memusage.MemoryUsageの
メモリ使用量の監視拡張、この拡張機能は、Windowsをサポートしていません。
- クローズスパイダースパイダーは、一定の値を超えた場合
- 送信する電子メール通知には、一定の値を超えました
設定値:
MEMUSAGE_LIMIT_MB:爬虫類サイズ制限は、閉じられたクローラ達する
MEMUSAGE_WARNING_MBを:Eメールのピーク時のメモリサイズを警告
通知電子メールアドレス:MEMUSAGE_NOTIFY_MAIL
MEMUSAGE_CHECK_INTERVAL_SECONDS:検出間隔を秒単位で
5.拡張メモリデバッグ
scrapy.extensions.memdebug.MemoryDebugger
この拡張は、次の情報を収集します。
- Pythonのガベージコレクタは、オブジェクトを収集することはありません
- 他の目的は予約するべきではありません
設定項目:
MEMDEBUG_ENABLED:メモリ情報を開いた後、統計に記録されています
6.自動シャットクモの拡張子
scrapy.extensions.closespider.CloseSpiderは、
指定された条件は、閉じた爬虫類です達します
設定項目:
CLOSESPIDER_TIMEOUT:一定時間までに実行されているクモが自動的にシャットダウンし、デフォルトの0は、近くにいないだろう
CLOSESPIDER_ITEMCOUNT:爬虫類クロール項目は、次に近い爬虫類、指定された数に達すると、デフォルトは0ではなく、近い
CLOSESPIDER_PAGECOUNT:爬虫類リーチにページをクロール閉じの数を指定し、デフォルトは、近い0ではありません
CLOSESPIDER_ERRORCOUNT:エラーが爬虫類がオフになっている、爬虫類の一定数まで実行中に発生した場合、デフォルトは0である、ない、閉じました
7. StatsMailer延長
scrapy.extensions.statsmailer.StatsMailerは
グラブが完了した後に統計情報の収集を含め、メッセージを送信します
設定項目:
STATSMAILER_RCPTS:受信電子メールアドレス