[Python-de] HTML mit RegEx filtern

Stefan Antonelli stefan.antonelli at operun.de
Do Dez 21 00:34:08 CET 2006


Diez B. Roggisch <deets at ...> writes:
> Keine Ahnung - tutorials sind ja nett, API-docs & ein paar Beispiele 
> reichen mir aber bei so etwas simplem.

Vielleicht hätte ich dazu sagen sollen das ich relativer Newbie bin... Ich hab
auf die schnelle einfach nichts gefunden das mir die Funktionen nahe bringt.
Aber da ich das Thema mit Sicherheit noch einmal brauchen kann werde ich mir das
bei Gelegenheit in Ruhe anschauen.

> 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)

Ja das glaub ich gerne und genau das bekomme ich auch zu spüren... Hier mein
Vorschlag:

text = re.sub(r'<img(.*?)>', lambda mat: mat.group(0).split(' ')[1][5:-1], text)

Das dropped zumindest schon mal alles was an uninteressanten Attributen,
verstümmelt oder konform, enthalten ist und gibt, sofern nach dem img auch die
src folgt, die URL korrekt zurück.