Wenn wir Zieldaten crawlen, insbesondere wenn die Datenmenge relativ groß ist, haben wir immer das Gefühl, dass die Crawling-Effizienz relativ langsam ist. Gibt es also Möglichkeiten, die Crawling-Effizienz von Crawlern zu verbessern? Wie kann die Crawling-Effizienz des Crawlers verbessert werden? Lassen Sie uns kurz mit Ihnen besprechen, wie Sie die Crawling-Effizienz des Crawlers verbessern können.


1. Optimieren Sie den Crawling-Prozess, um wiederholte Besuche zu vermeiden.

Beim Crawlen von Daten wird ein großer Teil der Zeit damit verbracht, auf die Antwort von Netzwerkanfragen zu warten. Daher kann die Reduzierung der Anzahl unnötiger Besuche Zeit sparen und die Crawling-Effizienz verbessern. Dann müssen Sie den Prozess optimieren und so weit wie möglich verschlanken, um wiederholte Besuche mehrerer Seiten zu vermeiden. Abnehmen ist also auch ein sehr wichtiges Mittel. Im Allgemeinen wird die Einzigartigkeit anhand der URL oder ID beurteilt. Wenn Sie bereits aufgestiegen sind, müssen Sie nicht weiter aufsteigen.


2. Multithread-verteiltes Crawlen, mehr Leute sind leistungsfähiger, und das Gleiche gilt für das Crawlen. Wenn eine Maschine nicht ausreicht, bauen Sie mehrere; wenn nicht, bauen Sie mehrere.

Der erste Schritt der Verteilung ist weder das Wesentliche des Crawlers noch erforderlich. Bei Aufgaben, die voneinander unabhängig sind und keine Kommunikation haben, können die Aufgaben manuell aufgeteilt und dann auf mehreren Maschinen ausgeführt werden. Dies reduziert die Arbeitsbelastung jeder Maschine und verdoppelt den Zeitaufwand. Wenn beispielsweise 2 Millionen Webseiten gecrawlt werden müssen, können 5 Maschinen 400.000 einzelne Webseiten crawlen. Relativ gesehen verkürzt sich die Zeit, die eine einzelne Maschine benötigt, um das Fünffache.


Wenn es eine Situation gibt, die eine Kommunikation erfordert, z. B. wenn sich die zu crawlende Warteschlange ändert, ändert sich diese Warteschlange jedes Mal, wenn sie gecrawlt wird. Auch wenn die Aufgabe geteilt ist, kommt es zu einer gegenseitigen Duplizierung, da jede Maschine wann crawlen muss Das Programm läuft. Die Warteschlangen sind alle unterschiedlich. In diesem Fall gibt es nur eine verteilte Hauptspeicherwarteschlange und andere Slave-Speicherwarteschlangen können separat abgerufen werden, sodass eine Warteschlange gemeinsam genutzt werden kann und sich gegenseitig ausschließende Abrufe nicht wiederholt werden.

[email protected]