我正在尝试在Scrapy中设置自定义下载器中间件类。我怀疑我错过了一些明显的东西,但我已经阅读了几次文档而没有找到解决方案。我对这应该是一项非常简单的任务感到有点沮丧,所以希望有人能够为我提供一些见解。
我已将以下行添加到我的settings.py文件中。
DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 }
添加该行并运行项目后,我收到有关模块中间件不存在的错误。经过一些研究,我发现您需要将__init__.py
文件添加到middlewares
文件夹中,以便Python识别它。我这样做了,现在收到以下错误:
NameError: Module 'myproject.middlewares' doesn't define any object named 'TestDownloader'
没有编译TestDownloader.py文件,而项目中的所有其他* .py文件都是。如果我正确理解我的Python阅读,那意味着它没有被导入到任何地方,但是我找不到任何额外的Scrapy设置来进行更改以使其工作。
答案 0 :(得分:17)
DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 }
要使其正常工作,请在middlewares.py
文件夹中创建文件myproject
,并在该文件中放置名为TestDownloader
的下载中间件类。
或者在其中包含middlewares
__init__.py
文件夹,您可以将名为TestDownloader
的下载程序中间件类放在__init__.py
中 - 这也应该有效。