您可以引发CloseSpider异常以关闭蜘蛛。但是,我认为这不能通过管道进行。
编辑 :avaleske在对此答案的注释中指出,他能够从管道中引发CloseSpider异常。最明智的方法是使用它。
在此线程的“
Scrapy用户”组中描述了类似的情况。
我引用:
要为代码的任何部分关闭蜘蛛,您应该使用
engine.close_spider
方法。请参阅此扩展以获取用法示例:https
:
//github.com/scrapy/scrapy/blob/master/scrapy/contrib/closespider.py#L61
您可以编写自己的扩展名,同时以closespider.py为例,如果满足特定条件,它将关闭蜘蛛。
另一个 “ hack”是在管道中的蜘蛛上设置一个标志。例如:
管道:
def process_item(self, item, spider): if some_flag: spider.close_down = True
蜘蛛:
def parse(self, response): if self.close_down: raise CloseSpider(reason='API usage exceeded')



