scrapyトピック(V):カスタム拡張機能

拡張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 =を。
  1. from_crawler登録処理信号
  2. 書くitem_scraped方法、すべての項目アウトの統計解析
  3. では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をサポートしていません。

  1. クローズスパイダースパイダーは、一定の値を超えた場合
  2. 送信する電子メール通知には、一定の値を超えました

設定値:
MEMUSAGE_LIMIT_MB:爬虫類サイズ制限は、閉じられたクローラ達する
MEMUSAGE_WARNING_MBを:Eメールのピーク時のメモリサイズを警告
通知電子メールアドレス:MEMUSAGE_NOTIFY_MAIL
MEMUSAGE_CHECK_INTERVAL_SECONDS:検出間隔を秒単位で

5.拡張メモリデバッグ

scrapy.extensions.memdebug.MemoryDe​​bugger
この拡張は、次の情報を収集します。

  1. Pythonのガベージコレクタは、オブジェクトを収集することはありません
  2. 他の目的は予約するべきではありません

設定項目:
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:受信電子メールアドレス

おすすめ

転載: www.cnblogs.com/qiu-hua/p/12638732.html