Regex mit Tabs und Zeilenumbrüchen

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
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

Montag 15. Dezember 2008, 00:34

Hallo meine Lieben,

ich habe mal wieder ein Regular-Expressions Problem :D
Ich versuche eine HTML Seite zu parsen, im Detail die Passage: "Langer Text" WIe man sieht beinhaltet die HTML Seite viele Tabs und Zeilenumbrüche und ich ich bekomme es irgendwie nicht hin den Text daraus zu parsen :(

Code: Alles auswählen

<li class="c5b"><h2><span class="orange_dfett">|</span> KURZINHALT</h2></li>
	 			<li class="c1">Langer Text </li>
                				<li class="c1 rechts"><img src="/image/pfeile/orange_klein.gif" alt="" height="6" width="3" border="0"/> 
				<a href="URL">mehr</a></li>
Bedingungen für die Regex
Start: <li class="c5b"><h2>
Ende:</a></li>
Ausgabe: "Langer Text"
Hoffe mal wieder auf eure Hilfe :)

Danke schon mal
D

PS: Hatte erst versucht die HTMLSeite komplett von Tabs und LineFeeds zu befreien, was der Performance allerdings einen sehr großen Abbruch getan hat (immens lange HTML Seite, aus der ich mehrer Elemente per Regex hole)
DasIch
User
Beiträge: 2465
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Montag 15. Dezember 2008, 00:49

Regexps sind nicht die Lösung deines Problems sondern ein weiteres, nimm besser einen richtigen Parser.
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

Montag 15. Dezember 2008, 01:11

HuHu..

mir ist bewusst dass das parsen von HTML Seite und verarbeiten von Regex nicht das optimum ist, aber das ganze wird ein "Einmal"Skript, bei dem ich mit Parsing-Fehlern leben kann, und dann schreibe ich das ganze Programm lieber ganz selber zumal bei dem Progrämmchen ein "echter" Html Parser zu überdimensioniert ist (für meinen Geschmack :)) Was haben denn immer alle gegen Regex :)

Grüße
Dom

PS: Frage am Rande: Wie wird das Verarbeiten von HTML Seiten im allgemeinen so gesehen, also von ServerSeite? Weil mein Script ruft von einem Host eine Menge Seiten ab (~3000), sollte man da lieber eine Pause einbauen?
Stalos
User
Beiträge: 1
Registriert: Sonntag 14. Dezember 2008, 16:11
Kontaktdaten:

Montag 15. Dezember 2008, 08:33

Code: Alles auswählen

p = re.compile(r'^<li class="c5b"><h2>(.)*Langer Text(.)*</a></li>$', re.IGNORECASE|re.DOTALL|re.MULTILINE)
re.DOTALL - '.' und '\n' passen zusamen
re.MULTILINE - '^' i '$' passen zu Beginn und Ende auch wenn die Regexp mehr als eins Linie hat

Die Losung ist fur "re" Modul

Entschuldigen Sie fur meine Fehler - ich schreibe aus Polen. Grusse fur Python Programmierer!
BlackJack

Montag 15. Dezember 2008, 10:12

@da.dom: Es geht nicht nur um Parsing-Fehler, sondern das `re`\s sehr schnell (zu) kompliziert werden. Wieso willst Du unnötig viel Arbeit in ein Wegwerfskript stecken, nur weil Du auf dem "falschen" Werkzeug bestehst?
Antworten