[Python-de] HTML mit RegEx filtern

Diez B. Roggisch deets at web.de
Mi Dez 20 23:59:34 CET 2006


> 
> Klingt interessant - ich glaube das hab ich sogar schon mal in Action gesehen...
> Hast Du vielleicht ein oder zwei Links mit ein paar guten Tutorials? Ich finde
> zwar ne menge Links, aber eben kein gutes Tutorial.

Keine Ahnung - tutorials sind ja nett, API-docs & ein paar Beispiele 
reichen mir aber bei so etwas simplem.

> Trotzdem interessiert mich die RegularExpression um aus aus einem String einen
> Teil (wie im Beispiel die URL in src) zu übernehmen und in einen neuen String
> ein zu bauen?
> 
> Ich bin immerhin schon so weit (bitte nicht kreuzigen):
> 
> text = re.sub('<img src="(.*?)">', lambda mat: mat.group(1), text)
> 
> Das filtert mir in einem String enthaltene Bilder heraus und gibt deren URLs
> zurück... Aber das muss doch schöner gehen? Und lambda ist an der Stelle doch
> eigentlich auch irgendwie weg zu kriegen?

Andere haben dir schon Loesungen gezeigt, die etwas weiter gehen. Aber 
was ist mit Attributen in einfachen Anfuehrungszeichen? Was ist 
(zugegeben, img-src hat das nicht) mit Attributen in denen das jeweils 
andere Anfuehrungszeichen vorkommt? Was mit Attributen, die gar keine 
Anfuehrungszeichen haben (HTML erlaubt das)? Was ist mit mehrzeiligen 
Tags? Was mit Gross/Kleinschreibung?

Die Zeit die du investierst deinen RE wasserdicht zu machen, ist besser 
investiert sich mit BS und generell HTML/XML-parsing (so das geht, wenn 
der HTML-code ausreichend sauber ist)

Glaub' es einfach. Es ist so.

Diez