如果我的互联网连接关闭(晚上会断开5分钟),我希望我的Scrapy爬虫能够再次启动。当互联网断开时,爬虫经过5次尝试后关闭。
我正在尝试在我的爬虫定义中使用此函数来在关闭时重新启动爬虫:
def handle_spider_closed(spider, reason):
relaunch = False
for key in spider.crawler.stats._stats.keys():
if 'DNSLookupError' in key:
relaunch = True
break
if relaunch:
spider = mySpider()
settings = get_project_settings()
crawlerProcess = CrawlerProcess(settings)
crawlerProcess.configure()
crawlerProcess.crawl(spider)
spider.crawler.queue.append_spider(another_spider)
我尝试了很多方法,例如重新实例化一个爬虫,但是出现了错误信息“ Reactor is already running ”或类似的信息。
我考虑从脚本中执行爬虫,并在爬虫完成后再次调用它,但也没有成功,因为反应器仍然在使用中。
我的意图是在爬虫关闭后重置它(因为爬虫失去了互联网连接)。
有没有人知道一个好的、简单的方法来解决这个问题?
spider.crawler.crawl(spider)
会怎样呢?谢谢。 - alecxe