Programmieraufgabe 2 (Crawler)

Startseite
THE TRUTH Informationssysteme
Sommersemester 2005
From:              Donnerstag, 28.04.2005
Upload deadline:   Donnerstag, 19.05.2005 09:15 MEZ

Ziel dieser Programmieraufgabe ist es, einen einfachen Crawler zu implementieren. Der Crawler startet auf der vorgegebenen Menge der URLs und durchsucht das Web. Die Aufgabe des Crawlers besteht darin, die durch Links referenzierten Dokumente herunterzuladen und zu parsen. Die extrahierten Links werden benutzt, um den Crawl fortzusetzen. Der Crawler benutzt intern eine URL-Queue, in der die gesammelten Links sortiert werden. Der Queue sollte die "Breite-Zuerst" Strategie implementieren, d.h. der Crawler soll zuerst direkte Nachfolger der Startdokumente (Tiefe=1), dann deren Nachfolger (Tiefe=2) etc. verarbeiten. Die Suche soll fortgesetzt werden, bis die maximale eingestellte Tiefe erreicht ist und es keine weiteren Links zum Crawlen mehr gibt. Der Crawler verwendet den ISParser (Aufgabe 1), um die Inhalte der HTML-Dokumente (Links, Woerter und deren Stammformen) zu extrahieren. Die extrahierten Inhhalte der gecrawlten Dokumente sollen intern in Form von Objekten mit Interface ISDokumentInterface verwaltet werden. Die Speicherung dieser Inhalte findet (noch) nicht statt - das wird zum Ziel unserer naechsten Aufgabe. Lediglich die extrahierten Links werden benutzt, um die URL-Queue zu fuellen (anschliessend werden Objekte ISDokument 'verworfen', spaeter sollen deren Inhalte in die Datenbank gespeichert werden). Jede URL darf nur einmal besucht werden, die Duplikate einer bereits besuchten URL sollten beim Crawl ignoriert werden. Der Crawler soll in einem separaten Einzel-Thread parallel zum aufrufenden Programm laufen. Der Aufrufer sollte in der Lage sein, den Crawler jederzeit zu starten, zu stoppen oder zurueckzusetzen. Zur Vereinfachung der Aufgabe machen wir folgende Annahmen:

Der Crawler besteht aus folgenden Komponenten:

Zu den Funktionen der Klasse ISCrawler gehoeren insbesondere Die Funktionen des Crawlers sind durch Interface ISCrawlerInterface vorgegeben. Die Klasse ISCrawler (interface ISCrawlerInterface) ist verbindlich, der Rest (insbesondere die Architektur der URL-Queue, die Realisierung der "Breite-Zuerst" Suchstrategie und die Buchfuehrung ueber bereits besuchte Links) steht Ihnen frei.

Sammlung der Links

Eine manuell vorbereitete Liste enthaelt mehrere Links zu den Themen Information retrieval und Data Mining. Einige Links sind 'fehlerhaft' (nicht existierende Seiten, Weiterleitungen, Timeouts), um die Stabilitaet des Crawlers zu testen. Der Crawler kann fuer Testzwecke diese Seite als ein Startdokument verwenden.



Tips


Weitere Informationsquellen zum Nachlesen