无法在Scrapy中定义自定义下载中间件

时间:2012-07-06 15:06:06

标签: python scrapy

我正在尝试在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设置来进行更改以使其工作。

1 个答案:

答案 0 :(得分:17)

DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 }

要使其正常工作,请在middlewares.py文件夹中创建文件myproject,并在该文件中放置名为TestDownloader的下载中间件类。

或者在其中包含middlewares __init__.py文件夹,您可以将名为TestDownloader的下载程序中间件类放在__init__.py中 - 这也应该有效。