Das einfachste Pipelinebeispiel kann nicht in scrapy arbeiten

8

Dies ist mein einfacher Code und ich bekomme es nicht funktionieren.

Ich untergliedere von initspider

Dies ist mein Code

%Vor%

Pipeline

%Vor%

Ich erhalte denselben Fehler, wenn ich versuche, das Element

zu drucken

Der Fehler, den ich bekomme, ist

%Vor%

Ich habe das Problem mit InitSpider . Meine Pieplines erhalten keine Objektobjekte

items.py

%Vor%

setting.py

%Vor%     
user1858027 15.12.2012, 09:19
quelle

3 Antworten

3

pipelines.TestPipeline fehlt die Bestellnummer. Es sollte etwas wie ITEM_PIPELINES = {'pipelines.TestPipeline': 900} sein.

    
vytotas 02.01.2015 07:25
quelle
2

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.

    
dxue2012 10.04.2016 01:51
quelle
0

Das habe ich gemacht und es hat funktioniert:

  1. Schreiben Sie in Ihrer Klasse MytestSpider einfach die Funktion parse auf diese Weise:

    %Vor%
  2. Entfernen Sie items.py , ich habe keine Item-Klasse erstellt und es funktionierte immer noch

  3. 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.

  1. 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%
  2. 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.

    
Cherry Wu 21.11.2016 00:20
quelle

Tags und Links