小编典典

scrapy:当蜘蛛退出时调用一个函数

python

有没有一种方法可以在Spider类终止之前触发它?

我可以自己终止蜘蛛,如下所示:

class MySpider(CrawlSpider):
    #Config stuff goes here...

    def quit(self):
        #Do some stuff...
        raise CloseSpider('MySpider is quitting now.')

    def my_parser(self, response):
        if termination_condition:
            self.quit()

        #Parsing stuff goes here...

但是我找不到任何有关如何确定蜘蛛何时自然退出的信息。


阅读 183

收藏
2020-12-20

共1个答案

小编典典

看来您可以通过来注册信号监听器dispatcher

我会尝试类似的东西:

from scrapy import signals
from scrapy.xlib.pydispatch import dispatcher

class MySpider(CrawlSpider):
    def __init__(self):
        dispatcher.connect(self.spider_closed, signals.spider_closed)

    def spider_closed(self, spider):
      # second param is instance of spder about to be closed.

在较新版本的scrapyscrapy.xlib.pydispatch中已弃用。相反,您可以使用from pydispatch import dispatcher

2020-12-20