Vom Spider in den Index – Aufbau des Google-Bot

7. June 2011

Robot Spider

Robot Spider

Dieser Artikel behandelt Grundlagen vom Aufbau und der Funktionsweise des Crawlens & Indizierens von Suchmaschinen. Darüber gibt es zwar eigentlich schon jede Menge Lesestoff, aber ich habe trotzdem gute Gründe einen weiteren Artikel hinzuzufügen. Zum einen geht selbst erfahrenen SEOs mitunter der Überblick verloren und zum anderen plane ich einige weiterführende Artikel, für die ich eine Grundlage brauche.

Der Weg vom Spider in den Index

Google, Yahoo, Bing und alle Suchmaschinen sind keine monolithischen Programme, sondern bestehen aus einer Vielzahl von Komponenten. Für Webseitenbetreiber ist es sehr hilfreich ein Modell davon im Kopf zu haben um viele Phänomene zu erklären und angemessen darauf zu reagieren. Ich werde in diesem Artikel allerdings nicht auf diejenigen Komponenten eingehen, die an der Websuche und dem Ranking beteiligt sind. Auch der genaue Aufbau des Index ist nicht das Thema. Es geht vielmehr um den Weg, den Dokumente nehmen, um überhaupt erst in den heiligen Index aufgenommen zu werden.

Vom Spider in den Index
Vom Spider in den Index

Die Skizze stellt dem schematischen Verlauf der Indizierung von Webseiten durch den Googlebot dar, wie ihn John Müller von Google auf der SMX 2011 beschrieben hat. Sie ist sicher nicht vollständig, aber ausreichend um das wichtige mentale Modell für den Ablauf der Indexierung darzustellen, das für jeden SEO hilfreich ist.

Im wesentlichen zeigt die Skizze zwei wichtige Datenströme auf.

  • Die schwarzen Pfeile zeichnen den Weg, den die HTML Seiten bzw. deren struktierte Inhalte vom WWW in den Index wandern, während
  • die blauen Pfeile zeigen welchen Weg URLs nehmen.

Anhand der Skizze kann man so zum Beispiel schnell erkennen wie es kommt, dass Google mehr URLs einer Seite kennt, als eigentlich im Index sind. Der URL-Index füllt sich dabei nicht nur über vorhergehende Crawling-Vorgänge auf derselben Webseite sondern auch durch eingehende Links oder Sitemaps, die in den Webmastertools eingereicht werden.

Werfen wir nun einen Blick auf die einzelnen Komponenten, die an dem Vorgang des Crawlens und Indizierens beteiligt sind.

Der Crawler (Spider, Robot, Bot)

Der Crawler bekommt vom Scheduler URLs übermittelt, die er anschließend abruft. Er verhält sich dabei aus der Sicht des “gecrawlten” Webservers wie ein normaler Nutzer, mit dem Namen des Bots im Useragent-String. Dieser lautet für den Crawler von Google zum Beispiel: “Googlebot/2.1 (+http://www.google.com/bot.html)”. Um sicherzugehen, dass es sich tatsächlich um den Googlebot handelt, muss aber noch die IP und der Hostname überprüft werden. Eine solche Überprüfung funktioniert natürlich auch mit Bing oder Yahoo … zumindest meistens. Der Bingbot fällt, obwohl eindeutig aus Redmond kommend, zumindest bei mir  öfter einmal durch seine eigene IP-Verifikation.

Der Crawler richtet sich dabei nach den ALLOW und DISALLOW Anweisungen der robots.txt, die er vom Webserver erhält. Damit kann gezielt gesteuert werden, welche Seiten oder Verzeichnisse der Crawler spidern darf und welche nicht.

Das HTML der gecrawlten Seite übergibt der Crawler dann an den Parser.

Der Parser

Der Parser zerlegt die Seite dann in die für die Indizierung relevanten Bestandteile. Wenn die Indizierung der Seite nicht durch eine Anweisung des Webserver verboten wird, stehen die Chancen gut, dass der Parser diese Daten dann an den Indexer übergibt. Der Parser versteht dabei alle möglichen HTML und XHTML Dialekte und kommt prima mit fehlerhaftem Markup zurecht.

Der Parser extrahiert ferner URLs aus dem erhaltenen Dokument und übergibt sie, wenn der Webserver das nicht durch ein NOFOLLOW unterbunden hat, dem URL-Index UND dem regulären Index. So kommt es, das Google eine URL bereits kennt, obwohl dazu (noch) keine Daten im Index sind. Findet der Parser von Google dabei zuviele URLs. gibt er dem Webmaster über die Webmastertools dabei die vor allem auf großen Portalen sehr beliebte Nachricht: “Googlebot hat auf Ihrer Website  eine extrem hohe Anzahl von URLs entdeckt”.

Der Scheduler

Der Scheduler zieht aus dem URL-Index die URLs heraus, die der Crawler als nächstes abrufen soll. Um den Webserver nicht mit zuviel Crawling zu belasten und auf der anderen Seite diejenigen URLs zu spidern, die für Google (scheinbar) am wichtigsten sind, gibt es dabei eine ausgefallene Prioritätensteuerung. Welche Paramater das genau sind, ist natürlich Googles Betriebsgeheimnis, aber folgende Parameter dürften diese Priorität beeinflussen:

  • Anzahl interne und externe Verweise (Wichtigkeit)
  • Häufigkeit der Änderungen
  • Domainparameter (Pagerank, Trust)
  • Einstellungen der Crawling-Geschwindigkeit in den Google Webmastertools
  • Geschwindigkeit der Webseite

Der Indexer

Schliesslich kommt der Indexer zum Zug. Wenn die zu indexierenden Daten vom Parser keine NOINDEX Anweisung enthalten, dann stehen die Chancen gut, dass der Inhalt in den Heiligen Index aufgenommen, bzw. aktualisiert wird. Wichtig ist hier zu wissen, dass die Indexierung mitunter geraume Zeit nach dem Erscheinen des Crawlers auf der Webseite erfolgen kann. Wie schnell eine Seite in den Index aufgenommen wird, hängt wiederum von vielen Faktoren ab, einige davon sehr ähnlich zu denen, den Scheduler beeinflussen.

Der Indexer ist eigentlich eine stabile Komponente, die weniger Updates erfährt als z.B. das Ranking während des Retrievals. Trotzdem ändert sich der strukturelle Aufbau des Index immer wieder einmal, und der Indexer ist davon natürlich ebenso betroffen. Sei es ein Primärer oder Sekundärer Index oder ein spezieller Index für aktuelle Themen, spätestes seit Google Caffeine wissen wir, dass auch Änderungen am Index am Ende die SERPs beeinflussen können, einfach weil sie den Ranking-Komponenten ganz andere Entscheidungskriterien zur Verfügung stellen können.

Steuerung des Crawlens mit NOFOLLOW

Um den Crawler zu steuern, kann man das Attribut NOFOLLOW einsetzen. Als META-TAG im Kopf der HTML-Seite sorgt es dafür, das der Crawler keinem einzigen Link auf der Seite “folgt”. Das Attribut kann aber auch im HTTP Header oder an einem einzelnem  Link gesetzt werden.

Hinter NOFOLLOW verbirgt sich also nichts weiter als der Vermerk, dass der Scheduler diese URL in der URL-Datenbank unberücksichtigt lässt OHNE sie an den Crawler zu übergeben. Das ändert nichts daran, dass Google die URL “kennt”.  Auch eine Indexierung der URL wird dadurch nicht verhindert. Bekommt Google die URL z.B. auf einem anderen Weg ohne NOFOLLOW, wird der BOT die URL schnellsten besuchen. Je nach dem, wieviel “Aggro” der Scheduler durch eingehende Links bis dahin aufgebaut hat, um so schneller geht das.

Mit dem vermehrten Aufkommen von Link-SPAM hatte Google die Idee, das NOFOLLOW Attribut ausserdem dazu zu verwenden, Links “zu entwerten”. Die mit NOFOLLOW verlinkte URL soll so den Pagerank, Anchortext und Trust nicht weitergeben, was zum Beispiel bei Blog-Kommentaren recht nützlich ist. Dies ist aber eigentlich ein semantischer Mißbrauch des Tags und dient nicht der Steuerung des Crawlers. Leider denken heute nach wie vor viele SEOs nur an diese, eigentlich zweckentfremdete Bedeutung von NOFOLLOW und vergessen darüber die mitunter sehr wichtige Funktion zur BOT-Steuerung.

Steuerung des Indexierens mit NOINDEX

Mit einem anderen Attribut kann man den Indexer beeinflussen: NOINDEX. Es funktioniert nur Seitenweit und kann entweder im HTML-Head als META-Tag oder im HTTP-Header gesetzt werden. Dieses Tag ist die Einzige Möglichkeit sicher zu verhindern, dass eine Seite in den Index aufgenommen wird.

Vorraussetzung dafür ist aber, das der Googlebot das NOINDEX Attribut auch lesen kann. Wird dies zum Beispiel durch den Einsatz einer fehlerhaften robots.txt verhindert, kann die Seite trotzdem im Index landen und führt dann meist zu Beschwerden wie “Warum  ist die Seite im Index, trotz DISALLOW in der robots.txt und NOINDEX im HTML-Head”. Das Webmaster-Forum von Google ist voll von solchen Anfragen.

Einsatz der robots.txt

Die robots.txt ist das wichtigste Mittel, um den Spider zu beeinflussen. Eine genaue Beschreibung aller Möglichkeiten findet man  zum Beispiel hier, auch wenn Google selbst hier etwas mit dem Unterschied von Crawlen und Indizieren etwas durcheinander kommt. Mit dem Schlüsselwort DISALLOW könnt ihr Spider von einer oder allen Suchmaschinen den Zugriff auf bestimmte Dokumente oder Verzeichnisse verwehren. Und hierin liegt auch schon die Ursache für viele Mißverständnisse. DISALLOW verbietet dem Spider, den Inhalt der Seite (Verzeichnis) abzurufen, es verhindert jedoch NICHT, dass die Seite im Index landet. Dies lässt sich nur und ausschließlich durch NOINDEX steuern, eine Information die der Spider aber zunächst einmal abrufen muss! Das führt also zu der (scheinbar paradoxen) Situation, dass man um eine Seite (Verzeichnis) wirkungsvoll vom Indizieren auschließen will, diese NICHT per DISALLOW in der robots.txt sperren darf.

Jedoch gibt es auch hier eine Ausnahme: manche Suchmaschinen, wie zum Beispiel Google, unterstützen prorietäre Erweiterungen der robots.txt. Eine davon ist die NOINDEX Direktive, mit der man nicht den Crawler (wie bei DISALLOW) sondern analog zum NOINDEX Tag tatsächlich den Indexer anspricht. Dadurch wird verhindert, dass die Seite im Index landet, obwohl dem Spider der Zutritt zur Seite erlaubt bleibt.

Seiten, die im Index landen ohne gecrawlt zu werden, erkennt man in den SERPs zumeist daran, dass sie über keinerlei Attribute wie Titel oder Description verfügen. Es rankt nur die URL und evtl. ein durch Links übergebener Anchortext als Titel.

Der Googlebot hält sich im übrigen (zumindest mit seinem Standard Useragent) sehr strikt an die Anweisungen der robots.txt. Es tauchen zwar immer wieder einmal Behauptungen auf, dass der Googlebot auch Seiten crawlen würde, die in der robots.txt auf DISALLOW stehen, aber bisher hat nach meiner persönlichen Erfahrung keine einer eingehenden Untersuchung Stand gehalten.  In den meisten Fällen war es einfach ein gefakter Useragent und die IP passte nicht zu Google oder aber die robots.txt war fehlerhaft oder/und zeitweise nicht zu erreichen.

Zusammenfassung

Sehen wir uns die Einflussmöglichkeiten auf das Crawlen und Indizieren noch einmal in der Übersicht an:

Google Parameter zum Crawlen und Indizieren

Google Parameter zum Crawlen und Indizieren

Soweit eine kurze Zusammenfassung der Thematik des Crawlens und Indizierens. Auch wenn sich dieser Artikel eher an Einsteiger gerichtet hat, werden in den nächsten Wochen und Monaten auf diesem Wissen aufbauende  Artikel folgen. Dafür, und für viele Alltagsphänomene im SEO Bereich, ist das Verständnis des Ablaufes und der Steuerung von Crawler und Indexer fundamentale Vorraussetzung.

Wer mit diesem Wissen ausgestattet ist, kann ca. 80% der Fragen aus dem Google Webmaster Forum Crawling, Indexing und Ranking beantworten. Viel Spaß!

 

Comments

Jan 7. June 2011 at 12:52

Ein wirklich toller Artikel! Verständlich geschrieben…vielen Dank dafür! :)

Enrico 7. June 2011 at 15:08

Schöner Artikel der eine eigentlich sehr komplexe Geschichte einfach aufzeigt. Das werde ich mir auf jeden Fall bookmarken und beim nächsten Kundengespräch mal anbringen!

Gretus 7. June 2011 at 16:03

Hallo,

kann meinem Vorredner nur zustimmen. Super Beitrag, gut zu lesen und sehr hilfreich…

Grüße

Gretus

Christian 10. June 2011 at 17:56

Das wird jetzt die Pflichtlektüre für neue Mitarbeiter und erspart mir persönlich eine Menge Erklärungen – danke dafür!

KitchenFairy 20. June 2011 at 11:09

Hallo,

sehr hilfreicher Beitrag, gut und verständlich geschrieben.
Hat mir auf jeden Fall weiter geholfen!

Maec-Pflege 10. August 2011 at 15:51

Hallo Bert,

schöner Beitrag :-) wann kommen die angesprochenen weiterführenden Beiträge? Warte ich schon länger drauf…

Viele Grüße
Maximilian

Leave a Comment

Previous post:

Next post: