Michael Schröpl: Spider

Beitrag lesen

Hi Gerold,

Ich arbeite an einem Intranet für eine Firma mit etwa. 1200 Mitarbeitern. Da ich nun eine Suchmaschine schreiben will, möchte ich wissen wie man einen Spider programmiert.

hm - eine Intranet-Suchmaschine braucht keineswegs zwingend einen Spider.

Denn in Deinem besonderen Szenario hast Du ggf. die Möglichkeit, über wesentlich geeignetere Protokolle als HTTP auf die entsprechenden Dateien zuzugreifen - naheliegenderweise über das Dateisystem (wenn der HTTP-Server entweder identisch mit dem Fileserver ist oder auf entsprechende Laufwerke zugreifen kann).

Schau Dir mal
    http://www.xav.com/scripts/search/
an. Dessen Indexer erlaubt Dir, zwischen einem Spider-Betrieb und einem Dateizugriffs-Indexer zu wählen - und dies sogar separat für definierbare Bereiche (Realms) des durchsuchbaren Universums.

Überhaupt könnte FDSE Dir die Aufgabe, eine Suchmaschinen zu _betreiben_, sehr vereinfachen ... mußt Du sie denn unbedingt selbst schreiben? Was kann FDSE nicht, das Du brauchst?

Wie aber automatisiere ich das, sodass das Programm eine Seite nach der anderen bearbeitet?

Das, was Du "spidern" willst, ist ein Graph. Es gibt Standard-Algorithmen zur Traversierung von Graphen - "Suchen in der Tiefe", "Suchen in der Breite" etc.

In jedem Fall brauchst Du
a) ein Gedächtnis, welches Dir sagt, wann Du welchen Netzknoten zuletzt besucht hast,
b) einen HTML-Links-Parser, der Dir aus jedem Dokument Verweise auf weitere Dokumente extrahiert
   (und damit das Gedächtnis erweitert)
c) eine Prozeßsteuerung, die aufgrund des Gedächtnisses eine Strategie zur Auswahl der nächsten
   zu besuchenden Seite umsetzt.

a) und c) sind relativ einfach; b) gibt es z. B. für Perl als fertiges Modul.

FDSE ist Open Source - im Zweifelsfalle kannst Du dessen Spider einfach lesen und Dich von ihm inspirieren lassen.

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
 => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.