[python] Get Scrapy-Crawler-Ausgabe / Ergebnisse in Skript-Datei-Funktion



Answers

AFAIK gibt es keine Möglichkeit, dies zu tun, seit crawl () :

Gibt eine verzögerte zurück, die ausgelöst wird, wenn das Crawlen beendet ist.

Und der Crawler speichert die Ergebnisse nirgendwo anders, als sie an den Logger auszugeben.

Die Rückkehr der Ausgabe würde jedoch mit der ganzen asynchronen Natur und Struktur von scrapy in Konflikt geraten, so dass das Speichern in der Datei und das Lesen dann eine bevorzugte Herangehensweise ist.
Sie können einfach eine Pipeline entwickeln, die Ihre spider_output in eine Datei speichert und einfach die Datei in Ihrem spider_output . Sie erhalten Ihre Ergebnisse, da reactor.run() Ihr Skript blockiert, bis die Ausgabedatei sowieso fertig ist.

Question

Ich verwende eine Skriptdatei, um eine Spinne innerhalb des Scrapy-Projekts auszuführen, und Spider protokolliert die Crawler-Ausgabe / Ergebnisse. Aber ich möchte Spider-Ausgabe / Ergebnisse in dieser Skriptdatei in einer Funktion verwenden. Ich wollte nicht Ausgabe / Ergebnisse in einer Datei oder DB speichern. Hier erhalten Sie den Skriptcode von https://doc.scrapy.org/en/latest/topics/practices.html#run-from-script

from twisted.internet import reactor
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
from scrapy.utils.project import get_project_settings

configure_logging({'LOG_FORMAT': '%(levelname)s: %(message)s'})
runner = CrawlerRunner(get_project_settings())


d = runner.crawl('my_spider')
d.addBoth(lambda _: reactor.stop())
reactor.run()

def spider_output(output):
#     do something to that output

Wie kann ich die Spinnen-Ausgabe in der 'spider_output'-Methode erhalten? Es ist möglich, Ausgaben / Ergebnisse zu erhalten.






Related