【发布时间】:2017-07-06 04:30:13
【问题描述】:
我一直在尝试在我的 scrapy 项目中启用 Downloader 中间件,但它似乎根本没有被识别。我已经安装了一些第三方中间件,我不知道它是否正在使用。我什至尝试卸载中间件包并运行我的代码,它运行时没有引发任何错误,说该包不存在或任何因此造成混淆的错误。
我的 settings.py 中的所有内容都被正确使用,就像其他设置和参数一样正常显示,因为它们在 settings.py 中定义,但感觉就像下载器中间件根本不工作。
这是我的 settings.py 文件中的 downloader_middleware 代码
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,
}
这是我运行scrapy crawl spider时的日志:
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']
似乎 downlaoder_middleware 代码只是被忽略了,因为 UserAgentMiddleware 无论如何都被启用,而不管我安装了其他第三方中间件。
我也尝试过像这样在我的 spider.py 中使用自定义设置(自定义管道确实按预期工作)但是无论我是否有自定义设置,都会发生同样的事情:
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,
}
}
【问题讨论】:
-
设置名为
DOWNLOADER_MIDDLEWARES,末尾带有“S”。 -
我不敢相信我花了这么多时间试图弄清楚到底发生了什么,但我无法发现,谢谢!
标签: python scrapy middleware