2017-07-06 2 views
0

J'ai essayé d'activer le middleware Downloader dans mon projet scrapy mais il ne semble pas être reconnu du tout. J'ai installé un middleware tiers et je ne sais pas s'il est utilisé ou non. J'ai même essayé de désinstaller les paquets middleware et d'exécuter mon code et il s'exécute sans soulever d'erreur en disant que le paquet n'existe pas ou quoi que ce soit d'où la confusion. Tout dans mes settings.py est utilisé correctement comme les autres paramètres et les paramètres apparaissent normalement comme ils sont définis dans settings.py, mais il semble que le middleware de téléchargement ne fonctionne pas du tout.Le middleware Scrapy - Downloader n'est pas chargé?

C'est le code downloader_middleware dans mon fichier settings.py

DOWNLOADER_MIDDLEWARE = { 
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, 
    'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 110, #installed with pip 
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 190, 
    'scrapy_proxies.RandomProxy': 200, #installed with pip 
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 210, 
} 

Voici mon journal quand je lance scrapy araignée crawl:

2017-07-06 12:46:20 [scrapy.middleware] INFO: Enabled downloader middlewares: 
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 
'scrapy.downloadermiddlewares.retry.RetryMiddleware', 
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 
'scrapy.downloadermiddlewares.stats.DownloaderStats'] 

il semble que le code downlaoder_middleware est tout simplement ignorée comme UserAgentMiddleware est activé de toute façon indépendamment de l'autre middleware tiers que j'ai installé.

J'ai aussi essayé d'utiliser des paramètres personnalisés dans mon spider.py comme celui-ci (le pipeline personnalisé a fait le travail comme prévu) mais les mêmes choses se sont passées, peu importe si j'avais les paramètres personnalisés ou non:

custom_settings = { 
     'ITEM_PIPELINES': { 
      'someCustomPipeline': 300, 
     }, 

     'DOWNLOADER_MIDDLEWARE': { 
      'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, 
      'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 110, #installed with pip 
      'scrapy.downloadermiddlewares.retry.RetryMiddleware': 190, 
      'scrapy_proxies.RandomProxy': 200, #installed with pip 
      'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 210, 
     } 
    } 
+0

Le paramètre est appelé ['DOWNLOADER_MIDDLEWARES'] (https://doc.scrapy.org/en/latest/topics/settings.html#std:setting-DOWNLOADER_MIDDLEWARES), avec un" S "à la fin. –

+0

Je ne peux pas croire que j'ai passé tout ce temps à essayer de comprendre ce qui se passe et je ne pouvais pas le repérer, merci! –

Répondre

0

Pour désactiver tous les middleware par défaut, les docs dit que vous devez définir tous les middlewares trouvés dans DOWNLOADER_MIDDLEWARES_BASE à None explicitement dans votre DOWNLOADER_MIDDLEWARE. comme il est dit dans les documents here?

+0

Je ne suis pas tout à fait sûr de ce que vous voulez dire, ne sont pas des middleware downloader une chose complètement différente de middleware araignées? –

+0

ouais je l'ai réalisé. Désolé de supprimer cette réponse. –

+0

@EdwardFu j'ai édité ma réponse. J'espère que cela aide –