我需要根据用户从脚本请求运行同一蜘蛛多次。如果我只运行一次,它会很好地工作,但之后我得到twisted.internet.error.ReactorNotRestartable
。这是我的代码:
from scrapy.crawler import CrawlerRunner
from crawlers.spiders import MySpider
from scrapy.utils.project import get_project_settings
from twisted.internet import reactor
def run_spider(params):
runner = CrawlerRunner(get_project_settings())
@defer.inlineCallbacks
def crawl():
yield runner.crawl(MySpider, params)
reactor.stop()
crawl()
reactor.run()
if __name__ == "__main__":
run_spider(param_1)
如果我在第一个之后运行run_spider(param_2)
,则会收到error.ReactorNotRestartable()
错误。我见过在run_spider()
函数内部使用带有蜘蛛的for循环的实现,但就我而言,要记住的重要一点是,自请求以来,我不知道用户要运行蜘蛛多少次来自API。