Dies ist mein einfacher Code und ich bekomme es nicht funktionieren.
Ich untergliedere von initspider
Dies ist mein Code
%Vor%Ich erhalte denselben Fehler, wenn ich versuche, das Element
zu druckenDer Fehler, den ich bekomme, ist
%Vor% Ich habe das Problem mit InitSpider
. Meine Pieplines erhalten keine Objektobjekte
Es gibt ein anderes Problem mit Ihrer Funktion process_item
. Laut der offiziellen Dokumentation :
Diese Methode wird für jede Elementpipelinekomponente aufgerufen und muss entweder ein dict-Objekt mit Daten, Item (oder einer untergeordneten Klasse) zurückgeben oder eine DropItem-Ausnahme auslösen. Gelöschte Objekte werden nicht mehr von weiteren Pipeline-Komponenten verarbeitet.
In Ihrem Fall könnten Sie am Ende Ihrer Funktion eine return-Anweisung hinzufügen:
%Vor% Wenn Sie keine return-Anweisung angeben, lautet der Rückgabewert dieser Pipeline None
. Deshalb beschwert sich die folgende Pipeline - Sie können item['username']
nicht ausführen, wenn item
None
ist.
Das habe ich gemacht und es hat funktioniert:
Schreiben Sie in Ihrer Klasse MytestSpider
einfach die Funktion parse
auf diese Weise:
Entfernen Sie items.py
, ich habe keine Item-Klasse erstellt und es funktionierte immer noch
In Ihrem Pipeline-Code:
%Vor% In meinem Testcode scheint alles, was ich yield
in der Spinne gemacht habe, das Element in Pipeline process_item
zu werden, aber das Ergebnis muss ein Wörterbuch oder Objekt sein ... Genau wie oben antworte.
In settings.py kenne ich Ihre gesamte Projektstruktur nicht, da der Pfad hier entscheiden kann, ob Sie die Ausgabe erhalten. Ich nehme an, Crawler ist ein Ordner, in dem Sie einen anderen Ordner namens "spiders" haben, und Ihr Spider-Code befindet sich in diesem "spiders" -Ordner. Ihre pipeline.py befindet sich ebenfalls im Crawler-Ordner Für mich hat das funktioniert:
%Vor%Schließlich, um den Code auszuführen, habe ich Python-Terminal, CD zu dem Code-Ordner, wo Sie Crawler-Ordner haben, dann führen Sie
%Vor%Obwohl mein Testcode nicht zu 100% identisch ist mit deinem, hoffe ich, dass dir das weiterhilft.