scrapy 主动退出

2019-12-10  本文已影响0人  zbharper

scrapy框架提供了几个退出条件参数,用于在满足某些条件时提前退出爬虫,这几个参数有:

CLOSESPIDER_ITEMCOUNT = 10000  # 生成10000个item后退出
CLOSESPIDER_TIMEOUT =100   # 超时100秒退出
CLOSESPIDER_PAGECOUNT = 20000 # 收到20000个response后退出
CLOSESPIDER_ERRORCOUNT = 100 # 发生100个错误后退出

参考scrapy源代码,爬虫退出是调用了scrapy引擎的close_spider方法,因此,可以在pipeline中显式调用,用于控制主动退出

class Pipeline(object):
    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler)

    def __init__(self, crawler):
        self.crawler = crawler

    def process_item(self, item, spider):
        # if 满足退出条件
        self.crawler.engine.close_spider(spider, "退出原因")
上一篇 下一篇

猜你喜欢

热点阅读