Webcrawling – Die Erschließung des Webs
Transcription
Webcrawling – Die Erschließung des Webs
Webcrawling – Die Erschließung des Webs Ronny Harbich 12. Januar 2008 Zusammenfassung Die Notwendigkeit Informationen aus dem Web zu sammeln, sei es für Web-Suchmaschinen oder sonstige Dienste, bedingt ein Traversieren des Webs. Webcrawler ermöglichen dies, indem sie den Verweisen in Webseiten nach gewissen Strategien folgen. Wir werden zu Beginn die Struktur des Webs und Webcrawler einführend betrachten. Anschließend erörtern wir den Aufbau und die einzelnen Komponenten eines Webcrawlers genauer. Wir enden mit einer Sicherheitsbetrachtung und einem Ausblick. Inhaltsverzeichnis 1 Einführung 3 2 Entwurf eines Webcrawlers 2.1 Die Frontier . . . . . . . . . . . 2.1.1 Eigenschaften des Webs 2.1.2 URL-Auswahlverfahren . 2.2 Der Downloader . . . . . . . . . 2.2.1 Arbeitsweise . . . . . . . 2.2.2 Beschränkungen . . . . . 2.3 Der Parser . . . . . . . . . . . . 2.3.1 URL-Extraktion . . . . . 2.3.2 URL-Normalisierung . . 2.3.3 Bereinigung . . . . . . . 2.4 Das Repository . . . . . . . . . . . . . . . . . . . . 3 4 4 5 5 5 6 6 6 7 8 8 3 Techniken zur Effizienzsteigerung 3.1 Parallelisierte Webcrawler . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Fokussierte Webcrawler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 9 4 Sicherheit 4.1 Schädliche Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Schädliche Webcrawler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10 5 Ausblick 10 Literatur 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Einführung 1 Einführung Das World Wide Web, kurz Web, ist ein System von HTML-Dokumenten – den so genannten Webseiten –, die in beliebiger Weise mittels URLs [Net05] untereinander referenziert sind. Abstrakter gesehen, handelt es sich hierbei um einen nicht-zusammenhängenden gerichteten Graphen, dessen Knoten die einzelnen Dokumente repräsentieren und dessen gerichtete Kanten einen Verweis eines Dokuments auf ein anderes darstellen. Es existiert also genau dann eine gerichtete Kante (a, b) von Knoten (Dokument) a nach Knoten b, wenn Dokument a auf Dokument b verweist. Ein Webcrawler (to crawl – kriechen), auch Webspider oder Webrobot, ist ein Programm, das Webseiten des Webs analysiert, den ihnen enthaltenen Referenzen folgt und diesen Prozess – er wird Webcrawling genannt – auf den verwiesenen Webseiten fortsetzt. Der obigen Abstraktion des Webs entsprechend, ist ein Webcrawler ein Algorithmus, der den gerichteten Graphen des Webs in einer zu definierenden Art und Weise traversiert. Insbesondere Web-Suchmaschinen benötigen für die Indizierung von Webseiten einen Webcrawler. Dort werden die beim Webcrawling gefundenen Webseiten weiteren Verarbeitungsschritten unterzogen und schließlich in einem lokalen Datenspeicher, etwa einer Datenbank, eingefügt. Dieser lokale Datenspeicher kann dann effizient und schnell nach gewünschten Informationen durchsucht werden und den Ort der Informationen im Web angeben. Weitere Beispiele für Anwendungen von Webcrawlern sind das Sammeln von E-Mail-Adresse (meist zu Spam-Zwecken) oder von Bildern auf Webseiten, Verweis- und HTML-Validierung, Datenschürfung (data mining) und Messungen des Webs (webometrics). Wie wir im Folgenden sehen werden, ist der Entwurf eines Webcrawlers nicht unbedingt trivial. 2 Entwurf eines Webcrawlers Überreicht nächste URL WWW Downloader Lädt Webseiten herunter Parser Übergibt Webseite Frontier Übergibt URLs Seed Repository Abbildung 1: Aufbau eines Webcrawlers. Inspiriert durch [PSM03] und [Wik07f]. Die Abbildung 1 veranschaulicht den Aufbau eines Webcrawlers. Die im rechten Teil des Bildes zu erkennende Frontier (the frontier – die Grenze) ist ein System, welches eine Sammlung von nicht besuchten Verweisen enthält. Bevor das eigentliche Webcrawling 3 2 Entwurf eines Webcrawlers beginnen kann, werden ihr durch den Benutzer oder durch ein anderes Programm eine gewissen Menge von Start-URLs (seed ) hinzugefügt. Anschließend wird das Webcrawling gestartet, indem die Frontier eine dieser Verweise an den Downloader übergibt. Dieser lädt die durch die URL bestimmte Webseite aus dem Web herunter und überreicht dem Repository eine Kopie der Seite. Außerdem übergibt der Downloader dem Parser eine weitere Kopie der Webseite, die dann von ihm nach Verweisen, also URLs, durchsucht wird. Anschließend erhält die Frontier sämtliche vom Parser gefundenen Verweise. Sie verarbeitet danach die URLs und der Webcrawling-Prozess beginnt mit der Übergabe einer neuen URL an den Downloader durch die Frontier von Neuem. Stellt die Frontier keinen Verweis mehr zur Verfügung, ist das Webcrawling beendet. Hier lässt sich bereits erkennen, dass die Frontier die Navigation“ – das Traversieren – ” durch den Graphen des Webs übernimmt. Im Folgenden werden wir die einzelnen Komponenten Frontier, Downloader, Parser und Repository genauer betrachten und sehen, mit welchen Problemen diese konfrontiert werden und mit welchen Strategien sie gelöst werden können. 2.1 Die Frontier Die Frontier übergibt dem Downloader die nach besonderen Kriterien ausgewählten URLs der herunterzuladenden Webseiten. Bevor wir uns einige URL-Auswahlverfahren ansehen, betrachten wir einigen Größen und Eigenschaften des Webs. 2.1.1 Eigenschaften des Webs Betrachten wir das Web, so stellen wir schnell fest, dass es eine enorm große Anzahl von Webseiten beinhaltet. Ende Januar 2005 wurden mehr als 11, 5 Milliarden Webseiten durch Web-Suchmaschinen indiziert [GS05]. Wir müssen daher annehmen, dass wir für einen Webcrawler nicht annähernd genügend Ressourcen (z. B. Speicherplatz, Rechenzeit) zur Verfügung haben, um alle Webseiten durchsuchen zu können. Als weiterhin problematisch ist die dynamische Erstellung von Webseiten zu sehen. Hierbei werden diese von Web-Technologien wie PHP, Java Server Pages oder Active Server Pages automatisch, meist aufgrund der Verwendung von Query-Variablen in den URLs, erzeugt. Unterschiedliche Wertebelegungen dieser Variablen führen dann zu unterschiedlichen durch ein Programm generierte Webseiten. Außerdem impliziert allein die beliebige Kombination der Query-Variablen eine große Anzahl an URLs, die auf dieselbe Webseite verweisen. Seien n ∈ N Query-Variablen gegeben. Dann gibt es bereits n! verschiedene URLs, die auf eine Webseite zeigen. Außerdem ist es durchaus möglich, dass, obwohl eine Query-Variable unterschiedliche Werte annimmt, die daraus resultierenden Verweise auf Webseiten gleichen Inhalts verweisen. Ein Beispiel hiefür ist die Angabe unterschiedlicher Sortierungen eines Datensatzes über eine Query-Variable. All dies impliziert in natürlicher Weise, dass der Webcrawler nicht alle Webseiten besuchen kann und nicht beliebig oft. Folglich muss die Frontier als URL-gebende Komponente eine Auswahl an zu besuchende URLs treffen. Im Nachstehenden werden wir einige Strategien zur URL-Selektion angeben. 4 2 Entwurf eines Webcrawlers 2.1.2 URL-Auswahlverfahren Normalerweise arbeiten Webcrawler zum Finden neuer URLs nur mit Webseiten und nicht mit anderen Ressourcen wie Bildern oder reinen Textdateien. Daher erscheint es sinnvoll nur Webseiten aus dem Web herunterzuladen. Mittels des MIME types in der Content-Type-Eigenschaft einer HTTP-HEAD request oder anhand einer möglicherweise vorhandenen Dateiendung (z. B. bar.html in der URL http://foo.de/bar.html) im Pfad-Teil einer URL kann noch vor dem Herunterladen bestimmt werden, um was für eine Ressource es sich hierbei handelt [Net99]. Außerdem kann die Query der URL eventuell entfernt werden, um die Anzahl dynamisch erstellter Webseiten einzuschränken (z. B. http://foo.de/bar.html?sort_id=1 zu http://foo.de/bar.html konvertieren). Ein sicherlich ebenso naiver Ansatz, die Anzahl der zu besuchenden URLs zu verringern, ist das Entfernen bereits besuchter Verweise aus der Frontier. Dies lässt sich beispielsweise mit einer Hash-Table, deren Schlüssel die einzelnen URLs bilden, effizient bewerkstelligen. So wird beim Einfügen eines Verweises in die Frontier stets getestet, ob diese bereits in der Hash-Table vorhanden ist. Ist die URL enthalten, wird sie verworfen, sonst wird sie in die Hash-Table aufgenommen. Ebenfalls einfach ist die Implementierung der Frontier als Warteschlange (queue). Hierbei wird eine vom Parser übergebene URL, die sich nicht in der Hash-Table befindet, also noch nicht besucht wurde, in die Warteschlange aufgenommen. Wie man sich leicht überlegt, ist dies eine Realisierung der Breitensuche (breadth-first search) im Graphen des Webs. Da bei alleiniger Verwendung dieser Methode potentiell sehr viele Verweise in die Warteschlange aufgenommen werden könnten, erweist es sich als sinnvoll, die Anzahl der URLs schlicht zu begrenzen. Eine durchaus interessante Möglichkeit, weitere URLs zu erhalten, ist das Genieren neuer URLs aus bereits vorhandenen – das so genannte path-ascending crawling. Beispielsweise kann man den Pfad-Teil einer URL in Unterpfade zergliedern. So kann etwa http://foo.de/tier/hund/ zu http://foo.de/tier/ konvertiert werden. 2.2 Der Downloader Der Downloader lädt die Webseite unter der von der Frontier übergebenen URL herunter und gibt diese an den Parser und an das Repository weiter. Im Folgenden betrachten wir die Arbeitsweise eines Webcrawlers und anschließend einige sinnvolle Beschränkungen beim Herunterladen. 2.2.1 Arbeitsweise Der Downloader, welcher im Grunde ein einfacher HTTP-Client ist, erhält eine URL von der Frontier mit deren Hilfe er den entsprechenden HTTP request an den in der URL angegebenen Server erstellt und sendet. Antwortet der Server, so erhält der Downloader die HTTP response, die neben einigen Metadaten die eigentliche angeforderte Ressource, nämlich die Webseite, beinhaltet. Die Metadaten können für eine nachträgliche Analyse benutzt werden, weshalb die 5 2 Entwurf eines Webcrawlers Speicherung dieser zweckmäßig ist. So enthält der HTTP response header etwa Fehlerinformationen, z. B. ob die Webseite überhaupt verfügbar ist und Zeitinformationen, z. B. wann die Webseite zuletzt geändert wurde. 2.2.2 Beschränkungen Natürlich sollten auch hier wieder einige Beschränkungen vorgenommen werden. So ist es sinnvoll, den timeout, die Wartezeit des Downloaders auf Antwort des Servers, eher niedrig zu wählen, um das Webcrawling nicht unnötig zu verzögern. Weiterhin sollte die Größe der herunterzuladenden Webseite begrenzt werden, um die verfügbare Bandbreite der Internetverbindung besser zu nutzen und Zeit zu sparen. Dies geschieht, indem einfach nur die ersten n Bytes der HTTP response vom Downloader gelesen werden (vergleiche streaming). Beschränkungen für den Downloader können auch server-seitig vorgenommen werden. Nicht offiziell standardisiert aber dennoch weit verbreitet ist der Robots Exclusion Standard [SEL07]. Dabei wird im Wurzelverzeichnis des Servers eine Datei namens robots.txt abgelegt – z. B. http://foo.de/robots.txt. Diese Datei enthält Regeln über Bereiche des Server, die nicht vom Webcrawler durchsucht werden sollen. Beispielsweise erlaubt es User-agent: FooCrawler Disallow: /private/ dem Webcrawler namens FooCrawler, nicht auf http://foo.de/private/ zuzugreifen. Wie man leicht erkennt, muss ein Webcrawler diese Angaben nicht unbedingt beachten, weshalb der Robots Exclusion Standard nur als zusätzliche Maßnahme zur server-seitigen Beschränkung einzusetzen ist. 2.3 Der Parser Der Parser durchsucht die vom Downloader überreichte Webseite nach URLs und gibt die gefundenen URLs danach an die Frontier weiter. Hierzu schauen wir uns nun Verfahren zur Extraktion der URLs aus Webseiten an. Anschließend zeigen wir Techniken zur URLNormalisierung und zur Normalisierung beziehungsweise Bereinigung von Webseiten. 2.3.1 URL-Extraktion Die grundlegende Aufgabe des Parsers ist das Finden von URLs in den vom Downloader heruntergeladenen Webseiten. Diese sind in (X)HTML verfasst, weshalb die enthaltenen Verweise mit a-Tags 1 , z. B. <a href="http://foo.de/">Zur Foo-Webseite</a> 1 Allgemein ist ein Tag eine Auszeichnung eines Datums mit zusätzlicher Information. In (X)HTML gibt es öffnende Tags (z. B.<name>) und schließende Tags (durch Schrägstrich gekennzeichnet, z. B.</name>). 6 2 Entwurf eines Webcrawlers definiert sind [W3C02], [W3C99]. Daher ergibt sich die einfache Möglichkeit, die URLs mittels eines regulären Ausdrucks 2 zu extrahieren [Mic07]. Der reguläre Ausdruck (?<=href=").+?(?=") erkennt die im Attribut href in Anführungszeichen stehende URL – aus dem obigen Beispiel also http://foo.de/. Mittels eines (X)HTML- beziehungsweise XML-Parsers ergibt sich eine weitere Methode, Verweise in HTML-Dokumenten zu erkennen. Beim Parsen werden die einzelnen Tags und deren Attribute sequentiell gelesen und ausgewertet. Man beachte, dass ein solcher Parser nicht nur mit regulären Ausdrücken arbeiten kann, da (X)HTML beziehungsweise XML keine reguläre Sprachen sind 3 . Zu beachten ist, dass URLs auch relativ zu einer Basis-URL angeben werden dürfen. Die Webseite unter http://foo.de/bar.html könnte den relativen Verweis <a href="xyz.html">Zur XYZ-Webseite</a> enthalten. Die vollständige, absolute URL heißt in diesem Falle http://foo.de/xyz. html. Die Basis-URL http://foo.de/ und die relative URL xyz.html werden also zusammengefügt. 2.3.2 URL-Normalisierung Wie schon in Abschnitt 2.1.2 erwähnt, ist es wichtig den mehrfachen Besuch einer Webseite zu vermeiden. Daher ist es von großer Bedeutung, dass der Parser die gewonnenen URLs für den Vergleich zweier Verweise normalisiert (URL normalization) [Wik07e], [PSM03]. Hierbei werden URLs, die auf dieselbe Webseite verweisen in eine einzige URL konvertiert, also etwa http://Foo.de/ und http://foo.de:80/ zu http://foo.de/. Fiele hier eine Normalisierung weg, würde der Downloader die Webseite unter http://foo.de/ zweimal herunterladen, was natürlich unsinnig wäre. Im Folgenden sind einige Regeln zur Normalisierung von Verweisen aufgestellt: • Kleinschreibung des Schema- und des Host-Namens, z. B. HTTP://Foo.de/ wird konvertiert zu http://foo.de/ • Abschließen eines Verzeichnisses mit einem Schrägstrich (/) im Pfad-Teil der URL, z. B. http://foo.de wird konvertiert zu http://foo.de/ • Entfernung des Ankers aus der URL, z. B. http://foo.de/bar.html#anchor wird konvertiert zu http://foo.de/bar.html 2 Ein regulärer Ausdruck ist ein Ausdruck, der eine Menge von Wörtern beschreibt (reguläre Sprache). Reguläre Ausdrücke können zum Filtern von durch ihn definierten Wörtern aus einem Text benutzt werden. 3 Formal gesehen sind in XML Wörter der Form an bn mit a = <tag>, b = </tag> und n ∈ N zulässig. Die Sprache {an bn |n ∈ N} ist keine reguläre Sprache [Pro05]. Hieraus folgt das XML keine reguläre Sprache ist. 7 3 Techniken zur Effizienzsteigerung • Sortierung von Query-Variablen, z. B. http://foo.de/bar.html?b=0&a=0&c=0 wird konvertiert zu http://foo.de/bar.html?a=0&b=0&c=0 • Entfernen der Port-Nummer, wenn es sich um den HTTP-Standard-Port 80 handelt, z. B. http://foo.de:80/ wird konvertiert zu http://foo.de/ 2.3.3 Bereinigung Das Parsen von Webseiten kann zu Problemen führen, wenn die HTML-Dokumente nicht standard-konform erstellt wurden. Zum Beispiel könnten Tags nicht geschlossen und Werte von Attributen nicht in Anführungszeichen gesetzt worden sein. Außerdem muss der Parser mit den verschiedenen (X)HTML-Standards zurechtkommen. Durch eine genau Analyse könnte der Parser Fehler im HTML-Dokument finden und beseitigen, also eine gewisse Normalform der Webseite erreichen. 2.4 Das Repository Der Downloader überträgt eine Kopie der heruntergeladenen Webseite an das Repository, welches diese im einfachsten Falle nur speichert. Allerdings können im Repository auch weitere, komplexere Verarbeitungsschritte unternommen werden. So könnte etwa bei einer Web-Suchmaschine vor der eigentlichen Speicherung die Filterung bedeutender Informationen aus den Webseiten dort stattfinden. 3 Techniken zur Effizienzsteigerung Als nächstes betrachten wir zwei Strategien zur Leistungssteigerung von Webcrawlern. Hierbei gehen wir zunächst auf parallelisierte Webcrawler ein, die die Komponenten Downloader und Parser gleichzeitig“, also parallel ausführen und anschließend auf ” fokussierte Webcrawler, die Webseiten inhalts-selektiv herunterladen. 3.1 Parallelisierte Webcrawler Während der Downloader über das Netzwerk auf einen Server zugreift, ein Dokument herunterlädt und dabei eine gewisse Zeit bis zur Bedienung warten muss, wird die Ressource CPU nicht genutzt. Andererseits wird die Ressource Netzwerk nicht verwendet, wenn etwa das heruntergeladene Dokument vom Parser durchsucht wird. Die Vermeidung der ineffizienten Nutzung der Ressourcen durch multithreading liegt daher nahe [Wik07d]. Parallel ausgeführt werden im Grunde nur der Downloader und der Parser. Die Frontier wird nicht parallelisiert, da sie überwacht, welche Webseiten bereits besucht worden sind und dies anderenfalls nicht mehr gewährleistet werden könnte, beziehungsweise dies unnötige Komplikationen hervorriefe. Bei der Verwendung einer einzelnen Frontier müssen, so wie bei allen gemeinsam genutzten Ressourcen, die Zugriffe der einzelnen Threads auf die Frontier, beziehungsweise auf die Ressourcen synchronisiert werden. Ein Parser-Thread muss folglich beim Hinzufügen einer URL in die Frontier einen Lock setzen, 8 4 Sicherheit um den alleinigen Zugriff auf die Frontier zu erhalten. Ein Downloader hingegen muss einen Lock setzen, wenn er eine URL in die Frontier einfügen will. Wie oben bereits erwähnt, müssen die einzelnen Threads exklusiven Zugriff auf sämtliche gemeinsam genutzten Ressourcen bekommen, so auch auf die Komponente Repository. Stellt die Frontier im Falle eines nicht-parallelisierten Webcrawlers keine URL mehr bereit, so ist das Webcrawling abgeschlossen. Im Falle parallelisierter Webcrawler ist diese Situation nicht unbedingt gegeben: Bekommt ein Downloader-Thread von der Frontier keine weitere URL, bedeutet dies nicht zwangsweise das Ende des Webcrawlings, da ein Parser-Thread kurz darauf neue URLs an die Frontier übergeben könnte und somit Verweise für einen Downloader-Thread verfügbar wären. Erst wenn die Frontier keinen Verweis bereitstellen kann und keine Parser- und Downloader-Threads mehr aktiv sind, ist das Webcrawling beendet. Dies impliziert, dass eine zusätzliche Instanz benötigt wird, die die Threads und die Frontier überwacht und synchronisiert. 3.2 Fokussierte Webcrawler Ein fokussierter Webcrawler, focused crawler oder topical crawler ist ein Webcrawler, der nur Webseiten gewisser vorgegebener Themen herunterlädt und durchsucht. Er ignoriert also im Idealfall alle Webseiten, die nicht den vorgegebenen Themen entsprechen. Topical crawler wurden zuerst von Menczer [Men97] vorgeschlagen und focused crawlers von Chakrabarti [CBD99]. Die größte Schwierigkeit fokussierter Webcrawler besteht darin, zu bestimmen, welche Webseiten zu den Vorgaben gehören, noch bevor sie heruntergeladen werden. Ein Ansatz ist, den Beschreibungstext der URLs in einem HTML-Dokument auf Zugehörigkeit zu den vorgegebenen Themen zu prüfen und bei positiver Auswertung herunterzuladen. 4 Sicherheit In diesem Abschnitt betrachten wir Sicherheitsaspekte bezüglich Webcrawler aus der Sicht von Servern und aus der Sicht von Webcrawlern. 4.1 Schädliche Server Es existieren server-seitige Möglichkeiten, einen Webcrawler zu schädigen. Beispielsweise sind Webcrawler-Fallen – so genannte spider traps oder crawler traps – Webseiten, die Verweisstrukturen realisieren, welche einen Webcrawler veranlassen, sich gewissermaßen von unbrauchbarer Webseite zu unbrauchbarer Webseite theoretisch unendlich weit fortzubewegen [Wik07c]. Folglich verschwendet der Webcrawler dann seine eigenen Ressourcen. Normalerweise erkennt der Webcrawler bereits besuchte Webseiten, allerdings ist dies, wie im folgenden Beispiel dargestellt, nicht immer trivial möglich: Auf dem Webserver steht uns eine Web-Skriptsprache, etwa PHP, zur Verfügung. Weiterhin sei ϕ ∈ N. Wir erstellen nun eine Webseite unter http://foo.de/trap.html?x=ϕ. Das Skript ließt den Wert der Query-Variable x in die Skript-Variable $x ein. Folglich gilt $x = ϕ. Anschließend wird 9 5 Ausblick $x durch $x := $x + 1 um 1 erhöht. Daraufhin erstellt das Skript in der trap.html den Verweis http://foo.de/trap.html?x=$x, also http://foo.de/trap.html?x=ϕ + 1. So wird der Webcrawler immer wieder auf die trap.html weitergeleitet und bleibt dort, bildlich gesprochen, stecken. 4.2 Schädliche Webcrawler Normalerweise sendet ein HTTP-Client, so auch der Webcrawler, bei einer HTTPAnfrage eine ihn identifizierende Zeichenkette in der User-Agent-Eigenschaft mit. Ein Server hätte somit die Möglichkeit, einen bekannten Webcrawler nicht zu bedienen. Da ein Webcrawler diese Zeichenkette beliebig festlegen kann, ist er in der Lage, sich als einen bekannten HTTP-Client, z. B. als Web-Browser, auszugeben und sich somit des eventuellen Ausschlusses des Servers zu entziehen. Dieses Verschleiern seitens des Webcrawlers ist insbesondere für folgende Betrachtung wichtig. Webcrawler können zum Sammeln von Daten zweckentfremdet werden. Besonders schädlich sind Webcrawler, die E-Mail-Adressen aus Webseiten extrahieren und diese dann für Spam verwenden (E-Mail-Harvester ). Mit Hilfe des regulären Ausdrucks [A-Z0-9._%+-]+?@[A-Z0-9.-]+?\.[A-Z]{2,4} können E-Mail-Adressen in einem HTML-Dokument erkannt werden. Abschließend sei noch erwähnt, dass der Einsatz einer Webcrawler-Falle auf betroffenen Servern im Falle schädlicher Webcrawler durchaus gerechtfertigt ist. 5 Ausblick Wie wir gesehen haben, ist Webcrawling ein wichtiges Mittel zur Informationsbeschaffung aus dem Web. Insbesondere Web-Suchmaschinen benötigen diese, um das Web zu indizieren. Problematisch ist die Erschließung des so genannten deep webs [Wik07a]. Dazu gehören etwa dynamische Webseiten, nicht-verwiesene Webseiten und Webseiten, die durch Authentifizierung geschützt sind. Diese Ressourcen können von einem Webcrawler nicht durchsucht oder erst gar nicht gefunden werden. Webcrawler werden in Zukunft wahrscheinlich genauere Analysen der HTML-Dokumente vornehmen und enger mit Wissensdatenbanken zusammenarbeiten, um effizienter und zielgerichteter durch das Web navigieren zu können. Webcrawling bleibt Gegenstand aktueller Forschung. Literatur [CBD99] Chakrabarti, Soumen ; Berg, Martin van d. ; Dom, Byron: Focused crawling: a new approach to topic-specific Web resource discovery. In: WWW ’99: Proceeding of the eighth international conference on World Wide Web. New York, NY, USA : Elsevier North-Holland, Inc., 1999, S. 1623–1640 10 Literatur [GS05] Gulli, Antonio ; Signorini, Alessio: The Indexable Web is More than 11.5 billion pages. (2005). http://www.cs.uiowa.edu/~asignori/web-size/ size-indexable-web.pdf [LWZD03] Lother, Mathias ; Wille, Cornelius ; Zbrog, Fritz ; Dumke, Reiner: Web Engineering. Pearson Studium, Addison Wesley, 2003 [Men97] Menczer, Filippo: ARACHNID: Adaptive Retrieval Agents Choosing Heuristic Neighborhoods for Information Discovery. In: Machine Learning: Proceedings of the Fourteenth International Conference, 1997, S. 227–235 [Mic07] Microsoft Corporation: .NET Framework Regular Expressihttp://msdn2.microsoft.com/en-us/library/hs600312(VS.71) ons. .aspx. Version: 2007 [Net99] Network Working Group: Hypertext Transfer Protocol – HTTP/1.1. http://tools.ietf.org/html/rfc2616. Version: 1999 [Net05] Network Working Group: Uniform Resource Identifier (URI): Generic Syntax. http://tools.ietf.org/html/rfc3986. Version: 2005 [Pro05] Prof. Dr. Jürgen Dassow: Theoretische Informatik – Vorlesungsmanuskript. (2005), Seite 88. http://theo.cs.uni-magdeburg.de/lehre06s/ ti2_if/ti_if04_s03.pdf [PSM03] Pant, G. ; Srinivasan, P. ; Menczer, F.: Crawling the Web. (2003). http://dollar.biz.uiowa.edu/~pant/Papers/crawling.pdf [SEL07] SELFHTML e.V.: robots.txt – Robots kontrollieren. http://de.selfhtml. org/diverses/robots.htm. Version: 2007 [W3C99] W3C: HTML 4.01 Specification. Version: 1999 [W3C02] W3C: XHTML 1.0 The Extensible HyperText Markup Language (Second Edition). http://www.w3.org/TR/xhtml1/. Version: 2002 [Wik07a] Wikipedia: Deep Web — Wikipedia, The Free Encyclopedia. http: //en.wikipedia.org/w/index.php?title=Deep_Web&oldid=171212481. Version: 2007. – [Online; accessed 25-November-2007] [Wik07b] Wikipedia: Focused crawler — Wikipedia, The Free Encyclopedia. http://en.wikipedia.org/w/index.php?title=Focused_ crawler&oldid=171623416. Version: 2007. – [Online; accessed 25November-2007] [Wik07c] Wikipedia: Spider trap — Wikipedia, The Free Encyclopedia. http:// en.wikipedia.org/w/index.php?title=Spider_trap&oldid=157589993. Version: 2007. – [Online; accessed 25-November-2007] 11 http://www.w3.org/TR/html4/. Literatur [Wik07d] Wikipedia: Thread (computer science) — Wikipedia, The Free Encyclopedia. http://en.wikipedia.org/w/index.php?title=Thread_ %28computer_science%29&oldid=173164036. Version: 2007. – [Online; accessed 26-November-2007] [Wik07e] Wikipedia: URL normalization — Wikipedia, The Free Enhttp://en.wikipedia.org/w/index.php?title=URL_ cyclopedia. normalization&oldid=172409602. Version: 2007. – [Online; accessed 25-November-2007] [Wik07f] Wikipedia: Web crawler — Wikipedia, The Free Encyclopedia. http:// en.wikipedia.org/w/index.php?title=Web_crawler&oldid=173326480. Version: 2007. – [Online; accessed 25-November-2007] 12