Ich werde einige Funktionen entwickeln, die verschiedene öffentliche Websites crawlen und die darauf enthaltenen Daten verarbeiten / aggregieren. Nichts ist so unheimlich wie das Suchen nach E-Mail-Adressen - in der Tat ist es etwas, das zusätzlichen Datenverkehr auf ihre Websites lenken könnte. Aber ich schweife ab.
Gibt es robots.txt
, abgesehen von der Ehrung , irgendwelche Regeln oder Richtlinien, die ich befolgen sollte, um (a) zu vermeiden, böswillig zu wirken und möglicherweise gesperrt zu werden, und (b) den Websitebesitzern / Webmastern keine Probleme zu bereiten?
Einige Beispiele, an die ich denken kann, mögen wichtig sein oder auch nicht:
- Anzahl paralleler Anfragen
- Zeit zwischen Anfragen
- Zeit zwischen ganzen Crawls
- Vermeiden potenziell destruktiver Verbindungen (ich möchte nicht die Spinne des Schicksals sein - aber wer weiß, ob dies überhaupt praktikabel ist)
Das ist aber wirklich nur Spucken. Gibt es eine erprobte Weisheit, die auf jeden anwendbar ist, der beabsichtigt, eine Spinne zu schreiben oder zu benutzen?
quelle
Antworten:
Neben robots.txt gehorchen, gehorchen
nofollow
undnoindex
in<meta>
Elementen und Links:Viele glauben, dass robots.txt nicht der richtige Weg ist, um die Indizierung zu blockieren, und haben aus diesem Grund viele Websitebesitzer angewiesen, sich auf das
<meta name="robots" content="noindex">
Tag zu verlassen, um Webcrawlern mitzuteilen, dass sie eine Seite nicht indizieren sollen.Wenn Sie versuchen, ein Diagramm der Verbindungen zwischen Websites (ähnlich wie PageRank) zu erstellen, soll
(und
<meta name="robots" content="nofollow">
) bedeuten, dass die Quellwebsite der Zielwebsite nicht genug vertraut, um sie ordnungsgemäß zu unterstützen. Während Sie die Zielsite indizieren können, sollten Sie die Beziehung zwischen den beiden Sites nicht speichern.SEO ist eher eine Kunst als eine echte Wissenschaft und wird von vielen Menschen praktiziert, die wissen, was sie tun, und von vielen Menschen, die die Executive Summaries von Menschen lesen, die wissen, was sie tun. Sie werden auf Probleme stoßen, bei denen Sie von Websites blockiert werden, wenn Sie Dinge tun, die für andere Websites aufgrund einer Regel, die jemand belauscht oder in einem Blog-Post auf SEOmoz gelesen hat, die möglicherweise richtig interpretiert wird oder nicht.
Aufgrund dieses menschlichen Elements gelten Sie, sofern Sie nicht Google, Microsoft oder Yahoo! sind, als böswillig, sofern nichts anderes nachgewiesen wurde. Sie müssen besonders vorsichtig sein, um so zu handeln, als ob Sie keine Bedrohung für einen Websitebesitzer darstellen, und entsprechend der Vorgehensweise eines potenziell böswilligen (aber hoffentlich harmlosen) Crawlers vorgehen:
/admin/
, z. B. URLs mit darin.Selbst dann wird es ein harter Kampf, wenn Sie nicht auf Black-Hat-Techniken wie UA-Spoofing oder absichtliches Maskieren Ihrer Crawling-Muster zurückgreifen: Viele Websitebesitzer blockieren aus den oben genannten Gründen einen unbekannten Crawler auf Sicht, anstatt ihn zu übernehmen die Chance, dass es jemanden gibt, der nicht versucht, seine Website zu "hacken". Bereite dich auf eine Menge Fehler vor.
Eine Möglichkeit, das negative Image eines unbekannten Crawlers zu bekämpfen, besteht darin, in Ihrem User-Agent-String zu verdeutlichen, wer Sie sind:
Wo
http://example.com/aarobot.html
erklärt, was Sie erreichen wollen und warum Sie keine Bedrohung sind. Diese Seite sollte ein paar Dinge haben:Letzteres ist der Schlüssel: Ein gutes Opt-out ist wie eine Geld-zurück-Garantie ™ und führt zu einem unzumutbaren Goodwill. Es sollte menschlich sein: ein einfacher Schritt (entweder eine E-Mail-Adresse oder im Idealfall ein Formular) und umfassend (es sollte keine "Fallstricke" geben: Deaktivieren bedeutet, dass Sie ausnahmslos aufhören zu crawlen).
quelle
(+http://example.com/aarobot.html)
. Ich weiß nicht, wozu das+
Zeichen da ist, aber ich habe es oft gesehen. Web-Sniffer macht das, und viele andere auch.rel="noindex"
dass es sich um ein<a>
Attribut handelt, aber die Seite, auf die Sie verlinken, beschreibt es als Teil des Attributs des<meta>
Tagscontent
. Ist es beides oder war das ein Tippfehler in der Antwort?Dies beantwortet zwar nicht alle Ihre Fragen, aber ich glaube, es wird Ihnen und den Websites, die Sie durchsuchen, hilfreich sein.
Ähnlich wie beim Brute Force-Verfahren, bei dem Websites ohne Aufmerksamkeit erzwungen werden. Wenn Sie über einen ausreichenden Pool von Websites verfügen, die Sie crawlen müssen, crawlen Sie die nächste Seite der Website erst, nachdem Sie die nächste Seite aller anderen Websites gecrawlt haben . Nun, moderne Server erlauben die Wiederverwendung von HTTP-Verbindungen. Möglicherweise möchten Sie mehr als einen Server verwenden, um den Overhead zu minimieren, aber die Idee bleibt bestehen. Durchforsten Sie eine Site nicht bis zur Erschöpfung, bis Sie zur nächsten wechseln . Teile die Liebe.
Am Ende eines Tages können Sie noch genauso viele Seiten gecrawlt haben, aber die durchschnittliche Bandbreitennutzung auf einer einzelnen Site ist viel geringer.
Wenn Sie vermeiden möchten, die Spinne des Untergangs zu sein, gibt es keine sichere Methode. Wenn jemand Bohnen in die Nase stecken will, tut er dies wahrscheinlich auf eine Art und Weise, die man niemals vorhersagen könnte. Wenn es Ihnen nichts ausmacht, die gelegentlich gültige Seite zu verpassen, sollten Sie eine schwarze Liste mit Wörtern für einen Link haben, der Sie daran hindert, dieser zu folgen. Zum Beispiel:
Nicht narrensicher, aber manchmal kann man einfach nicht verhindern, dass die Leute auf die harte Tour lernen müssen;)
quelle
robots.txt
schon in der Frage erwähnt und kann als angenommen angesehen werden.Mein einziger Rat ist, zuzuhören , was die Website, die Sie crawlen, Ihnen sagt, und als Reaktion darauf Ihren Crawl dynamisch zu ändern.
Ist die Seite langsam? Kriechen Sie langsamer, damit Sie DDOS nicht ausführen. Ist es schnell Dann krieche ein bisschen mehr!
Ist die Site fehlerhaft? Kriechen Sie weniger, damit Sie eine Website, die bereits unter Druck steht, nicht unnötig belasten. Verwenden Sie exponentiell zunehmende Wiederholungszeiten, damit Sie es weniger wiederholen, je länger die Site fehlerhaft ist. Denken Sie jedoch daran, es später noch einmal zu versuchen, damit Sie alles sehen können, was Sie beispielsweise aufgrund eines einwöchigen Fehlers in einem bestimmten URL-Pfad vermissen.
Immer viele 404s? (Denken Sie daran, dass unsere fantastischen 404-Seiten auch Serverzeit in Anspruch nehmen!) Vermeiden Sie es, vorerst weitere URLs mit diesem Pfad zu crawlen, da möglicherweise alles fehlt. Wenn
file001.html
-file005.html
ist nicht da, ich wette, Sie Dollar zu Donutsfile999.html
ist es auch nicht! Oder reduzieren Sie den Prozentsatz der Zeit, in der Sie etwas auf diesem Pfad abrufen.Ich denke, das ist der Punkt, an dem viele naive Crawler völlig daneben gehen, indem sie eine Robotikstrategie verfolgen, die sie unabhängig von den Signalen, die sie vom Zielstandort zurückerhalten, gleich ausführen.
Ein intelligenter Crawler reagiert auf die Zielwebsites , die er berührt.
quelle
Andere erwähnten einige der Mantras, aber lassen Sie mich einige hinzufügen.
Achten Sie auf Dateityp und -größe. Ziehen Sie nicht diese riesigen Binärdateien.
Optimieren Sie für einige typische Webserver "Verzeichnislisten" -Seiten. Insbesondere können Sie nach Größe, Datum, Name, Berechtigungen usw. sortieren. Behandeln Sie nicht jede Sortiermethode als separaten Stamm für das Crawlen.
Fragen Sie nach gzip (Komprimierung im laufenden Betrieb), sofern verfügbar.
Tiefe begrenzen oder Rekursion erkennen (oder beides).
Seitengröße begrenzen. Einige Seiten implementieren Tarpits, um E-Mail-Scrapping-Bots zu vereiteln. Es ist eine Seite, die mit Schneckengeschwindigkeit geladen wird und Terabyte lang ist.
Indizieren Sie keine 404-Seiten. Motoren mit den größten Indizes tun dies und erhalten dafür den wohlverdienten Hass.
Dies kann schwierig sein, aber versuchen Sie, Lastausgleichsfarmen zu erkennen. Wenn v329.host.com/pages/icle.php?99999 dasselbe wie v132.host.com/pages/article.php?99999 zurückgibt, kratzen Sie nicht die vollständige Liste der Server von v001.host.com bis v999. host.com
quelle
Ich werde nur eine kleine Sache hinzufügen.
Urheberrecht und andere rechtliche Aspekte: Ich weiß, dass Sie schreiben, dass es sich um öffentliche Websites handelt, sodass möglicherweise kein Urheberrecht besteht, die Speicherung der Daten jedoch möglicherweise andere rechtliche Aspekte aufweist.
Dies hängt natürlich davon ab, in welchem Land Sie Daten speichern (und wo Sie sie speichern). Ein typisches Beispiel sind die Probleme mit dem US Patriot Act im Vergleich zur EU-Datenschutzrichtlinie. Eine Zusammenfassung des Problems ist, dass US-Unternehmen ihre Daten z. das FBI, wenn es darum gebeten wird, ohne die Benutzer darüber zu informieren, wenn die Datenschutzrichtlinie vorsieht, dass die Benutzer darüber informiert werden müssen. Siehe http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud
quelle
Nennen Sie Ihren Webcrawler entweder das oder die Spinne, die Ihrem Namen zugeordnet ist. Das ist wichtig. Analytics-Engines und dergleichen suchen nach solchen, die Sie als ... Spinne identifizieren können. ;)
Wie ich gesehen habe, geschieht dies über den Anforderungsheader User-Agent
quelle
quelle