在Python中的Scrapy中使用CrawlerRunner时未加载settings.py文件

时间:2017-05-15 16:09:13

标签: python scrapy

我尝试调试运行以下代码并在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())

我尝试做的是在一次运行中运行多个蜘蛛,任何人都可以帮助我解决后一种解决方案吗?感谢。

1 个答案:

答案 0 :(得分:3)

由于scrapy.crawler.CrawlerRunner没有自动加载设置,您需要自己获取设置对象并将其传递给跑步者。

E.g。你可以替换这行代码:

runner = CrawlerRunner()

用这些:

from scrapy.utils.project import get_project_settings

runner = CrawlerRunner(get_project_settings())

另请参阅:Run Scrapy from a script (Scrapy doc)