2013-07-15 8 views
10

Ich habe einen einfachen Crawler codiert. In der settings.py Datei von zu scrapy Dokumentation beziehen, habe ichDoppelte URL-Crawling vermeiden

DUPEFILTER_CLASS = 'scrapy.dupefilter.RFPDupeFilter' 

Wenn ich den Crawler stoppen und den Crawler wieder neu starten, ist es die doppelten URLs wieder kratzen. Mache ich etwas falsch?

Antwort

20

Ich glaube, was Sie suchen, ist "Persistenz-Unterstützung", um Crawls anzuhalten und fortzusetzen.

es aktivieren Sie tun können:

scrapy crawl somespider -s JOBDIR=crawls/somespider-1 

Sie können here mehr darüber lesen.

+6

Ich denke, das sollte die akzeptierte Antwort sein. – Mithril

6

Gemäß der documentation ist DUPEFILTER_CLASS standardmäßig bereits auf scrapy.dupefilter.RFPDupeFilter eingestellt.

RFPDupeFilter hilft nicht, wenn Sie den Crawler stoppen - es funktioniert nur beim tatsächlichen Crawlen, hilft Ihnen, doppelte URLs schaben zu vermeiden.

Es sieht so aus, als müssten Sie Ihren eigenen, benutzerdefinierten Filter basierend auf RFPDupeFilter erstellen, so wie es hier gemacht wurde: how to filter duplicate requests based on url in scrapy. Wenn Ihr Filter zwischen Scrapy-Crawl-Sitzungen funktionieren soll, sollten Sie die Liste der gecrawlten URLs irgendwo in der Datenbank oder in der CSV-Datei aufbewahren.

Hoffe, dass hilft.

0

können Sie Scheduler mit Redis umschreiben wie scrapy-redis dann können Sie doppelte URL kriechen vermeiden, wenn Ihr Projekt reruning.

Verwandte Themen