【发布时间】:2021-11-11 16:02:36
【问题描述】:
我有一个包含多个蜘蛛的scrapy 项目。有些需要几分钟,有些需要几小时,以及介于两者之间的任何时间 - 但是每次运行所用的时间通常大致相同 - 因此您可以假设刮板 X 的运行时间与刮板 Y 和 Z 一起运行的时间大致相同。
我想要做的不是从 T0 开始并行运行所有,我想在开始时启动刮板 1、2、3,然后在 2 完成后启动刮板 4、5、6 和 7、8 ,9 在 3 完成后平滑下游处理需求(并发数据库连接等)
我认为我需要链接延迟,并且文档中有一些明确的示例,但我不确定如何设置它以及一些并行运行 - 当前的起始代码如下(每个蜘蛛都是在它自己的外部文件中)
from scrapy.utils.project import get_project_settings
from scrapy.crawler import CrawlerProcess
setting = get_project_settings()
process = CrawlerProcess(setting)
process.crawl('scraper1')
process.crawl('scraper2')
process.crawl('scraper3')
...etc...
...etc...
process.start()
【问题讨论】:
-
使用 ScrapyD API,然后启动一个蜘蛛,然后在该蜘蛛的
spider_closed方法中,启动你要运行的下一个蜘蛛 -
ScrapyD 目前不是一个选项 - 我需要遵循相同的“在 python 脚本中启动”方法...有可能吗?