【问题标题】:Scrapy shell ignoring export SCRAPY_SETTINGS_MODULEScrapy shell 忽略导出 SCRAPY_SETTINGS_MODULE
【发布时间】:2017-09-11 18:14:53
【问题描述】:

我已将设置模块 envvar 值设置为 my_module.my_submodule.my_leaf_module。里面是一些常量集,包括一个 DEFAULT_REQUEST_HEADERS 字典。无论如何,我设置了上面的内容并针对我想要的示例 URL 运行 scrapy shell,而没有指定任何蜘蛛。启动时没有异常或警告,但未使用我提供的设置模块。

我做错了什么?

【问题讨论】:

    标签: python python-2.7 scrapy settings scrapy-spider


    【解决方案1】:

    我不认为设置模块是在 shell 期间加载的。请参阅下面的文档

    https://doc.scrapy.org/en/latest/topics/shell.html

    它没有提到它。您可以做的是创建一个 DebugSpider 并在其中启动您的 url 并调用调试 shell。所以将下面添加到您的蜘蛛代码中

    class DebugSpider(scrapy.Spider):
        name = "debug"
    
        def __init__(self, url=None):
            if url is None:
                raise Exception("Please specify a url using -a url=....")
            self.start_urls = [url]
    
        def parse(self, response):
            from scrapy.shell import inspect_response
            inspect_response(response, self)
    

    然后从终端运行

    scrapy crawl debug -a url="http://tarunlalwani.com"
    

    这也将加载您的设置模块并发出请求并为您提供相同的调试外壳

    2017-09-12 00:16:27 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://tarunlalwani.com> (referer: None)
    [s] Available Scrapy objects:
    >>> [s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
    [s]   crawler    <scrapy.crawler.Crawler object at 0x10562b748>
    [s]   item       {}
    [s]   request    <GET http://tarunlalwani.com>
    [s]   response   <200 http://tarunlalwani.com>
    [s]   settings   <scrapy.settings.Settings object at 0x106432c50>
    [s] Useful shortcuts:
    [s]   shelp()           Shell help (print this help)
    [s]   view(response)    View response in a browser
    

    【讨论】:

    • 谢谢。请注意,shell 中引用的settings 是从settings.py 文件构建的Settings 对象,而不是settings.py 本身。
    猜你喜欢
    • 2015-02-24
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2017-06-17
    相关资源
    最近更新 更多