0

スパイダーがメールで閉じたときにクローラー統計を送信する単純なスクレイピー拡張クラスを作成しようとしています。これは私がこれまでのところ持っているもので、うまくいきます。

class SpiderClosedCommit(object):

    def __init__(self, stats):
        self.stats = stats

    @classmethod
    def from_crawler(cls, crawler):
        ext = cls(crawler.stats)
        crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)
        return ext

    def spider_closed(self, spider):
        spider_stats = self.stats.get_stats(spider)
        # some more code to send an email with stats ...

しかし今、スクレイピングされたドメインのリストを統計に追加する方法を見つけようとしています。私はドキュメントを調べましたが、コードがどのように見えるべきか、拡張機能またはスパイダークラスのどこに置くべきかを理解できませんでした。拡張クラスのスクレイピングされたドメインにアクセスするにはどうすればよいですか? またはスパイダークラスの統計にアクセスするにはどうすればよいですか?

よろしくお願いします。

ジャック

4

1 に答える 1

2

これを行う1つの方法は次のとおりです。

  1. 拡張機能をresponse_receivedシグナルにフックし、ドメインを抽出しますresponse.url
  2. 表示されたドメインで拡張子を保持set()します
  3. spider_statsスパイダーを閉じるとき、電子メールで送信する前にそれらのドメインを追加します
于 2013-09-04T20:46:28.700 に答える