/ / Scrapy spider veröffentlicht keinen Artikelspeicher - Python, XML, Scrapy, Web-Crawler

Scrapy Spider veröffentlicht keine Artikel Speicher - Python, XML, Scrapy, Web-Crawler

Ich benutze Scrapy, um einige Daten aus verschiedenen Quellen zu extrahieren, und es funktioniert wirklich gut Jetzt habe ich eine Spinne geschrieben, um Daten aus einer großen XML-Datei zu extrahieren (ca. 100 MB => 40000 Elemente).

Ich benutze die Schrotte XMLFeedSpider.

Das Problem ist, dass Scrapy sehr viel Speicher benötigt (1 GB oder mehr), und ich weiß nicht, warum es die von meinen Artikeln verwendete Memomry nicht freigibt.

Wenn ich das Trackrefs-Tool von scrapy (zum Herstellen einer Verbindung zu meiner Spinne mit Telnet) verwende, erhalte ich die folgende Ausgabe:

  >>> prefs()
Libxml2Document                     2   oldest: 160s ago
CustomName                          1   oldest: 163s ago
XmlResponse                         1   oldest: 161s ago
XmlXPathSelector                    1   oldest: 0s ago
Request                             1   oldest: 163s ago
CustomName                          38893   oldest: 150s ago

Ich habe alle Artikel-Pipelines deaktiviert.

In meiner Spinne behalte ich keine Referenz von Artikeln, ich erstelle Artikel und gebe sie zurück. Ich kann nicht finden, wo die Speicherlecks sind ...

Gibt es eine Erklärung, warum meine Artikel nicht veröffentlicht werden?

Antworten:

0 für die Antwort № 1

Entsprechend der Ausgabe von "prefs" ist es das ersteSpalte ist Klassenname und Scrapy hat keine Klasse mit dem Namen "CustomName". Dieser Name sieht aus wie eine Spalte im XML-Feld. Haben Sie außerdem diese seltsamen zwei Zeilen gesehen:

CustomName                          1   oldest: 163s ago
CustomName                          38893   oldest: 150s ago

Es bedeutet "verschiedene Klassen, aber mit demselben Namen". Sie sollten Ihren Code posten. Ich nehme an, Ihre Item-Klasse hat nur den Namen "CustomName".