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
Suchmaschine Programmieren
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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.
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.
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
Danke für die Antworten. Ich schauhe mir html5lib und lxml mal genauer an.
Kennt jemand zu "html5lib" eine Paar gute Beispielcodes?
Gruß
Andyh
Zuletzt geändert von Andyh am Freitag 1. August 2008, 18:24, insgesamt 1-mal geändert.
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Die hier? Letztendlich kommt sowieso ein DOM/ET/lxml-Tree raus, und die Outputformate sind ja schon von anderen dokumentiert worden.Andyh hat geschrieben:Kennt jamnd zu "html5lib" eine paar gute Beispielcodes?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo
Habe das hier gefunden:
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.
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())
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.
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
``h.feed(urllib.urlopen("http://cnc4all.de").read())``
Aber ich würde ja HTMLParser nicht verwenden.
Aber ich würde ja HTMLParser nicht verwenden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo
Warum?
Muss ja einen Grund haben
Gruß
Andyh
Warum?
Muss ja einen Grund haben
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]