2012-07-06 9 views
8

Ich versuche, eine benutzerdefinierte Downloader-Middleware-Klasse in Scrapy einzurichten. Ich vermute, dass ich etwas offensichtlich übersehen habe, aber ich habe die Dokumente ein paar Mal gelesen und habe keine Lösungen gefunden. Ich bin ein bisschen frustriert darüber, was eine sehr einfache Aufgabe sein sollte, also wird mir hoffentlich jemand einen Einblick geben können.Kann benutzerdefinierte Downloader-Middleware in Scrapy nicht definieren

Ich habe die folgende Zeile zu meiner Datei settings.py hinzugefügt.

Nach dem Hinzufügen dieser Zeile und Ausführen des Projekts, habe ich einen Fehler über das Modul Middlewares nicht vorhanden. Nach einigen Nachforschungen entdeckte ich, dass Sie eine __init__.py Datei in den Ordner middlewares für Python hinzufügen mussten, um es zu erkennen. Ich tat dies, und bin jetzt die folgende Fehlermeldung erhalten:

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

Die TestDownloader.py Datei kompiliert nicht werden, während alle anderen * .py Dateien im Projekt sind. Wenn ich mein Python-Lesen richtig verstehe, bedeutet das, dass es nirgendwo importiert wird, aber ich kann keine zusätzlichen Scrapy-Einstellungen finden, die geändert werden müssen, damit dies funktioniert.

Antwort

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

Damit dies funktioniert, erstellen Datei middlewares.py innerhalb myproject Ordner, und in dieser Datei setzen Sie Ihre Download-Middleware-Klasse TestDownloader genannt.

Oder mit middlewares Ordner mit __init__.py Inneren können Sie Ihre Download-Middleware-Klasse TestDownloader innerhalb __init__.py genannt setzen setzen - dies sollte auch funktionieren.

+1

Ja, eine sehr einfache Lösung, an die ich nie gedacht hätte. Vielen Dank. – Jared

Verwandte Themen