我在连续运行多个蜘蛛时遇到了一些麻烦,但找不到解决我问题的答案。
在我的项目中,我有多个蜘蛛,其中一个可以单独使用,但以下一个依赖于第一个完成,程序才能正常工作。
如何使一只蜘蛛追赶另一只蜘蛛?我试图做这样的事情:
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')
关于如何解决此问题的任何想法?
答案 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()