我有一个 RedisSpider (来自scrapy_redis),它在队列中侦听要解析的URL。它应该永远不会退出,它可以作为Web服务使用。但是出于某种原因,我希望能够在redis队列上发送特定消息时彻底清除蜘蛛。
def make_request_from_data(self, data):
cleaned_data = json.loads(data)
if cleaned_data == "END":
# Gently close spider
return scrapy.Request(url=cleaned_data['url'])
上面的代码是我正在尝试做的一个例子。
我尝试进行raise CloseSpider(reason="reason")
,但出现错误。 I figured out我只能在回调内引发 CloseSpider 。
然后我尝试触发如下所示的 close_spider()函数,但出现了一些错误:
self.crawler.engine.close_spider(self, reason="Close spider instruction recieved")
如果有人可以帮助,那就太好了。