首页 > 解决方案 > 使用 CrawlerProcess 顺序运行两个蜘蛛时出现 ReactorNotRestartable 错误

问题描述

我正在尝试顺序运行两个蜘蛛,这是我的模块的结构

class tmallSpider(scrapy.Spider):
    name = 'tspider'
    ...

class jdSpider(scrapy.Spider):
    name = 'jspider'
    ...

process = CrawlerProcess(get_project_settings())
process.crawl('tspider')
process.crawl('jspider')
process.start(stop_after_crawl=False)

当我运行这个时,我得到这个错误:

raise error.ReactorNotRestartable()
twisted.internet.error.ReactorNotRestartable

当我在终端中滚动时,我看到成功运行了两个蜘蛛,并且成功抓取了我想要获取的数据。但是,错误发生在最后,我猜是因为进程无法终止?我尝试了 process.stop 但它不起作用。我还尝试了官方指南(https://docs.scrapy.org/en/latest/topics/practices.html)上的代码,但那会导致蜘蛛未找到错误。任何想法如何解决它?

标签: pythonscrapyweb-crawlerpyspider

解决方案


您是否尝试过 CrawlRunner 和文档给出的示例?CrawlerRunner 可用于运行多个蜘蛛并能够手动停止。

如果你有,你能否提供一个最小的代码示例以及你得到的明确错误消息。


推荐阅读