8

Scrapy でカスタム ダウンローダー ミドルウェア クラスをセットアップしようとしています。明らかな何かを見逃しているのではないかと思いますが、ドキュメントを何度か読み直しましたが、解決策は見つかりませんでした。私は非常に単純なタスクであるべきことに少し不満を感じているので、誰かが私に洞察を提供してくれることを願っています.

次の行を settings.py ファイルに追加しました。

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

その行を追加してプロジェクトを実行した後、モジュールのミドルウェアが存在しないというエラーが発生しました。調査の結果、 Python が認識できるように__init__.pyするには、フォルダーにファイルを追加する必要があることがわかりました。middlewares私はこれを行いましたが、現在次のエラーが発生しています:

NameError: Module 'myproject.middlewares' doesn't define any object named 'TestDownloader'

TestDownloader.py ファイルはコンパイルされていませんが、プロジェクト内の他のすべての *.py ファイルはコンパイルされています。Python の読み取りが正しく理解できれば、それはどこにもインポートされていないことを意味しますが、これを機能させるために変更する追加の Scrapy 設定が見つかりません。

4

1 に答える 1

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

これを機能させるには、フォルダー内にファイルを作成middlewares.pymyproject、そのファイルにダウンローダー ミドルウェア クラスをTestDownloader.

または、その中にmiddlewaresフォルダがある場合は、ダウンローダ ミドルウェア クラスをその中__init__.pyに置くことができます。これも機能するはずです。TestDownloader__init__.py

于 2012-07-06T18:37:32.797 に答える