运行多个蜘蛛程序时,Reactor无法重新启动

时间:2019-02-27 22:20:06

标签: python-3.x web-scraping scrapy

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

在我的项目中,我有多个蜘蛛,其中一个可以单独使用,但以下一个依赖于第一个完成,程序才能正常工作。

如何使一只蜘蛛追赶另一只蜘蛛?我试图做这样的事情:

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')

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

1 个答案:

答案 0 :(得分:1)

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

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()