实现原理
def __init__(self, crawler):
self.crawler = crawler
@classmethod
def from_crawler(cls, crawler):
return cls(crawler)
# 结束爬虫
self.crawler.engine.close_spider(spider, 'closespider')
在spider中:
self.crawler.engine.close_spider(self, 'closespider')
在 pipeline 和 Middlewares 中:
spider.crawler.engine.close_spider(spider, 'closespider')
第二种方法.添加扩展类,在settings中添加
在setting中设置
CLOSESPIDER_TIMEOUT # 指定时间退出
CLOSESPIDER_ITEMCOUNT # 生成了指定数量的item
CLOSESPIDER_PAGECOUNT # 抓取了指定数量的响应
CLOSESPIDER_ERRORCOUNT # 在发生指定数量的错误
# 打开EXTENSIONS扩展
EXTENSIONS = {
'scrapy.extensions.closespider.CloseSpider': 500,
}