2017-05-11 15 views
3

私はScrapingプロジェクトにTor(Privoxyを使用)を使用しており、特定の数のアイテムが削られたときに新しいID(cf. https://stem.torproject.org/faq.html#how-do-i-request-a-new-identity-from-tor)を要求するScrapy拡張機能(cf. https://doc.scrapy.org/en/latest/topics/extensions.html)を書きたいと考えています。Scrapyでスパイダーを「一時停止」する方法は?

しかし、アイデンティティの変更には時間がかかります(数秒間)が、何も掻き取ることができないと予想しています。したがって、IPの変更が完了するまで、拡張機能をスパイダーに「一時停止」させたいと思います。

これは可能ですか? (私はCntrl + Cを使用し、JOBDIRを指定することについていくつかの解決策を読んだが、スパイダーを一時停止し、エンジン全体を停止したくないので少し劇的に見える)。あなたがそのような何かを試すことができるように

答えて

4

クローラエンジンはpauseunpauseのメソッドがあります。

class SomeExtension(object): 

    @classmethod 
    def from_crawler(cls, crawler) 
     o = cls(...) 
     o.crawler = crawler 
     return o 

    def change_tor(self): 
     self.crawler.engine.pause() 
     # some python code implements changing logic 
     self.crawler.engine.unpause() 
関連する問題