Python-Regex-Look-Behind erfordert ein Muster fester Breite

8

Beim Versuch, den Titel einer HTML-Seite zu extrahieren, habe ich immer die folgende Regex verwendet:

%Vor%

Dies wird alles zwischen den Tags in einem Dokument extrahieren und die Tags selbst ignorieren. Wenn Sie jedoch versuchen, diese Regex in Python zu verwenden, löst sie die folgende Ausnahme aus:

%Vor%

Der Code, den ich verwende, ist:

%Vor%

Wenn ich ein paar minimale Anpassungen mache, funktioniert es:

%Vor%

Dies berücksichtigt jedoch nicht mögliche HTML-Titel, die aus irgendeinem Grund Attribute oder Ähnliches haben.

Weiß jemand eine gute Abhilfe für dieses Problem? Irgendwelche Tipps werden geschätzt.

    
agnsaft 10.04.2010, 11:43
quelle

5 Antworten

1

Wenn Sie nur das Title-Tag erhalten möchten,

%Vor%     
ghostdog74 10.04.2010, 13:04
quelle
10

Verwende die Idee, HTML mit regulären Ausdrücken zu analysieren und stattdessen eine echte HTML-Parsing-Bibliothek zu verwenden. Nach einer kurzen Suche fand ich dieses . Es ist eine viel sicherere Möglichkeit, Informationen aus einer HTML-Datei zu extrahieren.

Denken Sie daran, HTML ist keine reguläre Sprache, daher sind reguläre Ausdrücke grundsätzlich das falsche Werkzeug zum Extrahieren von Informationen.

    
Welbog 10.04.2010 11:47
quelle
5

Hier ist eine berühmte Antwort parsing HTML mit regulären Ausdrücken, die eine großartige Arbeit zu sagen, "Verwenden Sie keine Regex zum Parsen von HTML."

    
Stephen Harmon 10.04.2010 13:01
quelle
3

Die Regex zum Extrahieren des Inhalts von nicht verschachtelten HTML / XML-Tags ist eigentlich sehr einfach:

%Vor%

Für etwas Komplexeres sollten Sie jedoch einen geeigneten DOM-Parser wie Urlib oder BeautifulSoup verwenden.

    
Cerin 29.03.2013 15:02
quelle
2

Was ist mit etwas wie:

%Vor%     
Vojta Rylko 10.04.2010 17:22
quelle

Tags und Links