Seite 1 von 1

Suchmaschine Programmieren

Verfasst: Freitag 1. August 2008, 09:59
von Andyh
Hallo

Ja ihr habe richtig gelesen ich will eine Suchmaschine Programmieren.
Ich habe mir auch schon 1 Terabyte Speicher gekauft.

Ich habe mit das so gedacht:
Ich setze einfach die Buchstaben vom Alphabet der Reihe nach zusammen und schauhe ob was vorhanden ist, wenn ja dann soll allen Links auf der Seite nachgeganen werden und deren Links usw.

[EDIT]

Nur wie bekomme ich die Keywörter aus den Seite heraus?
Text sieht ja so aus:

>Seite Kress wurde bearbeitet</

Nur wenn ich mit "re.findall('>.*</', keyhtml)" dann bekomme ich halt alles zurück was so "> </" geschrieben ist zurück.

[EDIT]:
Das ist gelöst:

Jetzt zum Problem ich bin soweit das ich die Links auf den Seiten finde.
Nur wie bekomme ich die links "sauber"
z.B:
<a href="ueber_die_hardware.htm">
<a href="topic-15572.html" class="topictitle">problems with cherrypy`s http auth using wsgiref</a>
<a target="_blank" href="http://www.flf-book.de/Benutzer/cnc4all.htm">

ich möchte nur den Link und nicht in welcher Frame der sich öffnen soll.
Mit "replace" kann man ja nach den Standart Framen Suchen aber nicht nach selbst gemachrn mit anderem Namen.

Wie macht man das am leichtesten. Ich habe was Versucht den link auzuspalten und in eine Liste zu Backen das ich besser suchen kann aber das hat nicht Funktioniert.

Lösung:
re.findall('<a.*?href="((http|ftp)s?://.*?)".*?>(?uism)', seite)
link.replace('(', '').replace(')', '').replace(', http', '')

Gruß
Andyh

Verfasst: Freitag 1. August 2008, 11:37
von mkesper
Schau doch mal, wie yacy das angeht.

Verfasst: Freitag 1. August 2008, 15:59
von Hyperion
Das Web ist leider kein Baum! Daher reicht es sicherlich nicht allen Links nachzugehen stumpf nachzugehen. Du musst ja auch prüfen, ob Du eine Seite schon besucht hast.

Für das Parsen von HTML sollte man imho nicht auf REs setzen, da HTML stark verschachtelt ist. Im Falle von Links mag das noch gehen, aber ich würde da eher auf einen echten XML (HTML) Parser setzen.
Für Keywords ist das sicherlich auch komfortabler.

Verfasst: Freitag 1. August 2008, 16:52
von Leonidas
Aber besser einen fehlertoleranten Parser nehmen, wie html5lib ihn bietet, da eine ganze Menge kaputtes HTML im Web rumfliegt.

Verfasst: Freitag 1. August 2008, 17:54
von Andyh
Hallo

Danke für die Antworten. Ich schauhe mir html5lib und lxml mal genauer an.
Kennt jemand zu "html5lib" eine Paar gute Beispielcodes?

Gruß
Andyh

Verfasst: Freitag 1. August 2008, 18:22
von Leonidas
Andyh hat geschrieben:Kennt jamnd zu "html5lib" eine paar gute Beispielcodes?
Die hier? Letztendlich kommt sowieso ein DOM/ET/lxml-Tree raus, und die Outputformate sind ja schon von anderen dokumentiert worden.

Verfasst: Freitag 1. August 2008, 19:14
von Andyh
Hallo

Habe das hier gefunden:

Code: Alles auswählen

import urllib,htmllib,formatter 
h = htmllib.HTMLParser(formatter.AbstractFormatter(formatter.DumbWriter())) 
h.feed(urllib.urlopen("http://cnc4all.de") ).read())
was ich nicht verstehe ist was ich damit anfangen kann.

Der Text der Seite baut sich schön auf und das wahrs?

var = h.feed(urllib.urlopen("http://cnc4all.de") ).read())
geht nicht

in einer Funktion:
return h.feed(urllib.urlopen("http://cnc4all.de") ).read())
geht auch nicht

Ist sicher total leicht nur komme ich mal wieder nicht drauf, naja nach 10h Programmieren muss mal wieder eine Pause sein.

Gruß
Andyh

Die Idee mit dem Parser wahr echt gut.

Verfasst: Freitag 1. August 2008, 19:37
von Leonidas
``h.feed(urllib.urlopen("http://cnc4all.de").read())`` :?:

Aber ich würde ja HTMLParser nicht verwenden.

Verfasst: Freitag 1. August 2008, 20:15
von Andyh
Hallo

Warum?
Muss ja einen Grund haben

Gruß
Andyh

Verfasst: Freitag 1. August 2008, 20:19
von Leonidas
Andyh hat geschrieben:Warum?
Muss ja einen Grund haben
Weil HTMLParser Schrott nicht so besonders gut parsen kann.