我已经将设置模块envvar值设置为my_module.my_submodule.my_leaf_module。内部是一些常量集,包括一个DEFAULT_REQUEST_HEADERS字典。无论如何,我设置了上面的内容,并在没有指定任何蜘蛛的情况下,针对我想要的示例URL运行scrapy。启动时没有异常或警告,但不使用我提供的设置模块。
我做错了什么?
发布于 2017-09-11 18:49:19
我不认为设置模块是在shell期间加载的。见下面的文档
https://doc.scrapy.org/en/latest/topics/shell.html
它没有提到它。不过,您可以做的是创建一个DebugSpider并在其中启动您的url并调用一个调试外壳。因此,将下面添加到您的蜘蛛代码中
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"这也将加载您的设置模块,并发出请求,并给您一个相同的调试shell。
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 browserhttps://stackoverflow.com/questions/46161977
复制相似问题