如果被 ctrl-c 取消,则执行在脚本中启动的爬虫蜘蛛的 close() 方法

问题描述

# 'run.py' in the root directory of a scrapy project 
import os
from twisted.internet import reactor
from scrapy.crawler import CrawlerRunner
from scrapy.crawler import Crawler
from scrapy.utils.log import configure_logging
from scrapy.utils.project import get_project_settings
from directoryA.spiders.my_spider import MySpider


configure_logging()
settings = get_project_settings()
runner = CrawlerRunner()
d = runner.crawl(Crawler(MySpider,settings))
d.addCallback(lambda _: reactor.stop())
reactor.run()
import scrapy


class MySpider(scrapy.Spider):
    name = "example_spider"
    start_urls = "http://example-url.example"

    def parse(self,response):
        pass

    def close(self,reason):
        if reason == "shutdown":
            print("success")
        else:
            print("failure")

如果抓取过程因按下 "success" 一次而中断,我希望执行 close() 方法输出ctrl + c)。在命令行中调用的脚本是 run.py

在此先非常感谢您!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...