Was sind die wichtigsten Überlegungen beim Erstellen eines Webcrawlers?

StackOverflow https://stackoverflow.com/questions/32366

  •  09-06-2019
  •  | 
  •  

Frage

Ich habe heute gerade angefangen, darüber nachzudenken, einen Webcrawler zu erstellen/anzupassen, und weiß sehr wenig über die Webcrawler-/Roboter-Etikette.Die meisten Schriften zum Thema Etikette, die ich gefunden habe, scheinen alt und umständlich zu sein, daher würde ich gerne ein paar aktuelle (und praktische) Erkenntnisse von der Webentwickler-Community erhalten.

Ich möchte einen Crawler verwenden, um aus einem ganz einfachen Grund durch „das Web“ zu laufen: „Erfüllt das Markup der Website XYZ die Bedingung ABC?“.

Das wirft für mich viele Fragen auf, aber ich denke, die beiden wichtigsten Fragen, die ich zuerst klären muss, sind:

  • Es fühlt sich von Anfang an etwas „zweifelhaft“ an – ist so etwas akzeptabel?
  • Welche besonderen Überlegungen sollte der Crawler anstellen, um die Leute nicht zu verärgern?
War es hilfreich?

Lösung

Befolgen Sie robots.txt (und nicht zu aggressiv, wie bereits gesagt wurde).

Vielleicht möchten Sie über Ihre User-Agent-Zeichenfolge nachdenken – sie ist ein guter Ort, um im Voraus darüber zu informieren, was Sie tun und wie Sie kontaktiert werden können.

Andere Tipps

Neben den guten Antworten von WillDean und Einar würde ich Ihnen wirklich empfehlen, sich die Zeit zu nehmen, um die Bedeutung der HTTP-Antwortcodes zu lesen und zu erfahren, was Ihr Crawler tun sollte, wenn er auf jeden einzelnen stößt, da dies einen großen Unterschied in Ihrer Leistung machen wird darüber, ob Sie von einigen Websites ausgeschlossen sind oder nicht.

Einige nützliche Links:

HTTP/1.1:Statuscode-Definitionen

Aggregator-Client-HTTP-Tests

Wikipedia

Bitte stellen Sie sicher, dass Sie in Ihrer User-Agent-Zeichenfolge eine URL angeben, die erklärt, wer/was/warum Ihr Roboter crawlt.

Alles gute Punkte, die hier gemacht wurden.Sie müssen sich auch mit dynamisch generierten Java- und JavaScript-Links, Parametern und Sitzungs-IDs, dem Escapen von einfachen und doppelten Anführungszeichen, fehlgeschlagenen Versuchen bei relativen Links (mit ../../, um über das Stammverzeichnis hinauszugehen), der Groß-/Kleinschreibung usw. auseinandersetzen. Frames, Weiterleitungen, Cookies....

Ich könnte tagelang weitermachen, und irgendwie habe ich es auch getan.Ich habe ein Roboter-Checkliste Das deckt das meiste davon ab und ich beantworte gerne, was ich kann.

Sie sollten auch darüber nachdenken, Open-Source-Roboter-Crawler-Code zu verwenden, da Sie damit bei all diesen Problemen einen großen Vorsprung haben.Ich habe dazu auch eine Seite: Open-Source-Robotercode.Hoffentlich hilft das!

Vergessen Sie auch nicht, die Bot-Meta-Tags zu beachten: http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2

Eine weitere Sache, über die Sie nachdenken sollten: Seien Sie bei Spider-Seiten nicht zu voreilig und entscheiden Sie, dass Dinge nicht existieren oder Fehler aufweisen.Einige Seiten sind aufgrund von Wartungsarbeiten oder Fehlern, die innerhalb kurzer Zeit behoben werden, offline.

Ich würde sagen, dass es sehr wichtig ist, zu berücksichtigen, wie viel Belastung Sie verursachen.Wenn Ihr Crawler beispielsweise jedes Objekt einer einzelnen Site mehr oder weniger auf einmal anfordert, kann es zu Ladeproblemen für diese bestimmte Site kommen.

Mit anderen Worten: Stellen Sie sicher, dass Ihr Crawler nicht zu aggressiv ist.

Das ist durchaus möglich – stellen Sie einfach sicher, dass jede Seite pro Sitzung nur einmal besucht wird.Da Sie technisch gesehen einen Suchbot erstellen, müssen Sie robots.txt und befolgen no-cache Regeln.Bei Bedarf können Benutzer Ihren Bot weiterhin gezielt blockieren, indem sie IP-Adressen blockieren.

Soweit ich das beurteilen kann, suchen Sie nur nach Quellcode, also möchten Sie etwas erstellen, dem Sie folgen können <link>s für Stylesheets und <script src="..."></script> für JavaScripts.

Die Belastung ist ein wichtiger Aspekt.Legen Sie Grenzen fest, wie oft Sie eine bestimmte Website crawlen und welche grundlegendsten Informationen Sie zum Erreichen Ihres Ziels benötigen.Wenn Sie nach Text suchen, laden Sie nicht alle Bilder herunter, solche Sachen.

Beachten Sie natürlich robots.txt, aber stellen Sie auch sicher, dass Ihre Benutzeragentenzeichenfolge genaue Kontaktinformationen und möglicherweise einen Link zu einer Webseite enthält, die beschreibt, was Sie tun und wie Sie es tun.Wenn ein Webadministrator viele Anfragen von Ihnen sieht und neugierig ist, können Sie möglicherweise viele Fragen mit einer informativen Webseite beantworten.

Sie müssen einige Funktionen hinzufügen, um Websites/Domänen oder andere Dinge (IP-Bereiche, ASN usw.) auf die schwarze Liste zu setzen, um zu verhindern, dass Ihr Spider mit Spam-Websites blockiert wird.

Sie benötigen eine HTTP-Implementierung mit viel Kontrolle über Timeout und Verhalten.Bei vielen Websites ist damit zu rechnen, dass sie ungültige Antworten, große Antworten oder Müll-Header zurücksenden oder die Verbindung einfach auf unbestimmte Zeit ohne Antwort usw. offen lassen.

Vertrauen Sie auch nicht darauf, dass der Status 200 bedeutet, dass die Seite existiert.Meiner Erfahrung nach sendet ein ziemlich großer Teil der Websites 200 für „Nicht gefunden“ oder andere Fehler zurück (zusammen mit einem großen HTML-Dokument).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top