首页 > 解决方案 > 运行多个蜘蛛时反应堆无法重新启动

问题描述

我在连续运行多个蜘蛛时遇到了一些麻烦,我找不到解决我问题的答案。

在我的项目中,我有多个蜘蛛,其中一个可以自己工作,但是以下几个取决于第一个完成的程序才能正常工作。

我怎样才能让一只蜘蛛追着另一只蜘蛛跑?我试着做这样的事情:

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
import excelMerger

process = CrawlerProcess(get_project_settings())

process.crawl('urlClothes_spider')
process.start()
process.crawl('clothes_spider')
process.start()
process.crawl('finalClothes_spider')
process.start()

但是在第一个完成后,我得到了一个反应堆不可启动的错误。

我也试过把.crawl一个一个接一个,但似乎没有遵循顺序,所以程序不起作用,像这样

process.crawl('urlClothes_spider')
process.crawl('clothes_spider')
process.crawl('finalClothes_spider')

关于如何解决这个问题的任何想法?

标签: python-3.xweb-scrapingscrapy

解决方案


您需要遵循文档中的顺序执行示例:

from twisted.internet import reactor, defer
from scrapy.crawler import CrawlerRunner
from scrapy.utils.project import get_project_settings

runner = CrawlerRunner(get_project_settings())

@defer.inlineCallbacks
def crawl():
    yield runner.crawl('urlClothes_spider')
    yield runner.crawl('clothes_spider')
    yield runner.crawl('finalClothes_spider')
    reactor.stop()

crawl()
reactor.run()

推荐阅读