2017-09-11 3 views
1

J'ai défini la valeur d'envvar du module de paramètres sur my_module.my_submodule.my_leaf_module. Inside est un ensemble de constantes comprenant un dictionnaire DEFAULT_REQUEST_HEADERS. Quoi qu'il en soit, je définis ce qui précède et exécuter le shell scrapy contre un URL d'exemple que je veux sans spider spécifié. Quand il démarre, il n'y a pas d'exception ou d'avertissement mais mon module de paramètres fourni n'est pas utilisé.Scrapy shell ignorant l'exportation SCRAPY_SETTINGS_MODULE

Qu'est-ce que je fais mal?

Répondre

3

Je ne pense pas que les modules de réglage sont chargés pendant le shell. Consultez la documentation ci-dessous

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

Il n'a pas fait mention. Ce que vous pouvez cependant faire est de créer un DebugSpider et lancer votre URL dans celui-ci et invoquer un shell de débogage. Alors ajoutez ci-dessous pour votre araignées Code

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) 

Puis de course terminale

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

Cela va charger votre module de paramètres et également faire la demande et vous donner un même shell débogage

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