scrapy-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')