2017-11-24 7 views
0

Angenommen, ich analysiere eine Listing-Seite und erzeuge eine JSON-Ausgabe. Am Ende, wenn alles geparst ist, möchte ich einige Operationen auf dem letzten Scrapped-Ergebnis ausführen. Wie kann ich es in Scrapy machen? Ich weiß über process_item aber es funktioniert für jedes Element in Iteration. Die geschlossene Sache, die ich fand, war close_spider, aber ich bin nicht sicher, dass, wenn ich scrapy crawl spider laufen lasse, ob es mir JSON gibt, das ich in closed_spider schuf? Wenn ja, wie?Wie verarbeitet man letzte Schaber in Scrapy?

Antwort

0

Sie könnten die JsonItemExporter Überschreiben die finish_exporting Methode Unterklasse weiter die endgültige JSON-Datei

+0

Können Sie das näher erläutern Sie Ihre Antwort zu verarbeiten. Erhalte ich vollständig analysierte Daten aller Datensätze in dieser Methode? – Volatil3

+0

Hallo @ Volatil3 ja, im Grunde der Artikel Exporteur fügen Sie die serialisierten Elemente in die Datei, und weil Sie Zugriff auf die Ausgabedatei haben, haben Sie Zugriff auf alle Elemente (überprüfen Sie bitte https://github.com/scrapy/scrapy/ blob/master/scrapy/exporters.py # L101) dort ist die Variable 'file' die Datei, die alle serialisierten Elemente enthält. Alternativ könnten Sie auch einen benutzerdefinierten speicherinternen Speicher erstellen (das Objekt, das die Datei verwaltet, die vom Artikelexporteur verwendet wird, an seinem endgültigen Ziel wie s3, ftp usw.) und alle Elemente verarbeitet, wenn die Methode 'store' aufgerufen wird – Wilfredo