我们假设我有一只需要多次运行的蜘蛛
class My_spider(Scrapy.spider):
#spider def
我想做那样的事情
while True:
runner = CrawlerRunner()
deferred = runner.crawl(My_spider)
deferred.addBoth(lambda _: reactor.stop())
reactor.run()
time.sleep(180)
有没有办法做到这一点?我用谷歌搜索过去12个小时,我认为我尝试的一切都不起作用,我要么遇到ReactorNotRestartable还是别的什么。在这一点上,我正在考虑编写一个单独的模块,它只能安排控制台命令。
答案 0 :(得分:0)
使用计划模块而不是时间。这是你如何做到的
import schedule
schedule.every(1).minute.do(runner.crawl(My_spider))
while True:
schedule.run_pending()
这将每1分钟运行一次抓取功能。详细了解此库here