scrapy-redis
新しいURLがredisキューにプッシュされるのを常に待ちます。キューが空になると、スパイダーはアイドルになります 状態を設定し、新しいURLを待機します。これは、キューが空になったらスパイダーを閉じるために使用したものです。
蜘蛛がアイドルにいるとき (何もしない場合)、redisキューにまだ何かが残っているかどうかを確認します。そうでない場合は、close_spider
でスパイダーを閉じます 。次のコードはspider
にあります クラス:
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
from_crawler = super(SerpSpider, cls).from_crawler
spider = from_crawler(crawler, *args, **kwargs)
crawler.signals.connect(spider.idle, signal=scrapy.signals.spider_idle)
return spider
def idle(self):
if self.q.llen(self.redis_key) <= 0:
self.crawler.engine.close_spider(self, reason='finished')