Verwenden von Middleware zum Ignorieren von Duplikaten in Scrapy

8

Ich bin Anfänger in Python und verwende Scrapy für ein Personal-Web-Projekt.

Ich benutze Scrapy, um Daten von mehreren Websites wiederholt zu extrahieren, also muss ich jedes Crawling überprüfen, wenn ein Link bereits in der Datenbank vorhanden ist, bevor er hinzugefügt wird. Ich habe das in einer piplines.py-Klasse gemacht:

%Vor%

Aber ich habe gehört, dass die Verwendung von Middleware für diese Aufgabe besser ist.

Ich fand es ein wenig schwierig, Middleware in Scrapy zu verwenden, kann jemand bitte mich zu einem guten Tutorial umleiten.

Ratschläge sind willkommen.

Danke,

Bearbeiten:

Ich benutze MySql und Memcache.

Hier ist mein Versuch nach @ Talvalin Antwort:

%Vor% %Vor%

Aber anscheinend wird die Methode process_request beim Crawlen ignoriert.

Vielen Dank im Voraus,

    
elhoucine 09.04.2014, 13:09
quelle

1 Antwort

8

Hier ist ein Beispiel für einen Middleware-Code, der URLs aus einer sqlite3-Tabelle (Id INT, url TEXT) in eine Menge lädt und dann die Anfrage-URLs auf die Menge prüft, um festzustellen, ob die URL ignoriert werden soll oder nicht. Es sollte relativ einfach sein, diesen Code so anzupassen, dass er MySQL und Memcache verwendet, aber bitte lassen Sie mich wissen, wenn Sie Probleme oder Fragen haben. :)

%Vor%

Wenn Sie Probleme mit dem Import haben, wie z. B. ich, und Sie gerade Ihren Monitor lochen, befand sich der obige Code in einer middlewares.py -Datei, die im obersten Projektordner mit der folgenden DOWNLOADER_MIDDLEWARES -Einstellung abgelegt wurde / p> %Vor%     

Talvalin 09.04.2014, 16:43
quelle

Tags und Links