我尝试调试运行以下代码并在settings.py文件中有一个断点,它完成后没有插入那行代码:
configure_logging()
runner = CrawlerRunner()
@defer.inlineCallbacks
def crawl():
# yield runner.crawl(a_spider)
yield runner.crawl(b_spider)
reactor.stop()
crawl()
reactor.run() # the script will block here until the last crawl call is finished
然而,如果我使用以下代码运行,它将被命中。
cmdline.execute(("scrapy crawl a_spider -o %s -t csv -L INFO" % (file_path,)).split())
我尝试做的是在一次运行中运行多个蜘蛛,任何人都可以帮助我解决后一种解决方案吗?感谢。
答案 0 :(得分:3)
由于scrapy.crawler.CrawlerRunner
没有自动加载设置,您需要自己获取设置对象并将其传递给跑步者。
E.g。你可以替换这行代码:
runner = CrawlerRunner()
用这些:
from scrapy.utils.project import get_project_settings
runner = CrawlerRunner(get_project_settings())