Bestimmte Zeile auslesen [URL]

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
The_Net
User
Beiträge: 9
Registriert: Samstag 17. April 2010, 12:01

Hallo,
Wenn ich eine HTML-Seite online habe, kann ich auf diese mittels urllib zugreifen. Nun möchte ich aber in dem nicht gerade kurzen Dokument einen Wert in einer bestimmten Zeile, an einer bestimmten Stelle auslesen, und diesen dann ohne Tags ausgeben. Wie funktioniert das?

mfg
lunar

Nutze einen HTML-Parser (e.g. html5lib, lxml.html)
The_Net
User
Beiträge: 9
Registriert: Samstag 17. April 2010, 12:01

Ich habe ein Beispiel im Forum gefunden und dieses kurzerhand kopiert.

Code: Alles auswählen

import urllib,re
urllib.urlretrieve("URL","C:/doc.htm")
text = open("C:/doc.html").read()

out = re.search("<td>Name:</td><td>(.*?)</td>",text)
text = text.group()
print text
Das ganze funktioniert ganz gut, nur wird alles ausgegeben (<td>Name:</td><td>(.*?)</td>) und nicht nur das, was mit Regex abgefangen wird. Wie wird nur das gewünschte ausgegeben? Sicher, man könnte am Anfang und am Ende die Tags entfernen, nur gibt es eine schönere Methode?
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Code: Alles auswählen

text = text.group(1) 
Hier ist das mit den "groups" beschrieben: [mod]re#re.MatchObject.group[/mod]
the more they change the more they stay the same
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

The_Net hat geschrieben: Das ganze funktioniert ganz gut, nur wird alles ausgegeben (<td>Name:</td><td>(.*?)</td>) und nicht nur das, was mit Regex abgefangen wird.
Das ist ja eben alles, was Du mit der RegExp "abfängst" ;-)
Wie wird nur das gewünschte ausgegeben? Sicher, man könnte am Anfang und am Ende die Tags entfernen, nur gibt es eine schönere Methode?
Ja, einen HTML-Parser verwenden, wie oben empfohlen ;-)
Antworten