Seite 1 von 1

Von HTML-Tag zu HTML-Tag herausschreiben

Verfasst: Freitag 20. Mai 2005, 09:01
von michel
Guten tag

ich möchte ein Skript machen das es mir ermöglicht eine HTML-Datei zu scannen, wobei ich nur den Teil zwischen zwei HTML-Tag-s angezeigt haben möchte...zB von <titles> bis </titles> oder von <Body> bis </body>, diesen Teil möchte ich dann mit einem anderen Block ersetzen können,fertig!

wie könnte ich das realisieren? Ich arbeite dabei indem ich Zeile für Zeile scanne, ist das richtig so? oder muss ich die ganze Datei irgendwie reinsaugen und dann die Bedingung durchlaufen lassen ?

Danke für die Hilfe
Michel Koller

Verfasst: Freitag 20. Mai 2005, 10:48
von jens
Wenn du wirklich nur den Titel und den Body haben willst, würde ich es mit RE machen. Wenn du ander Sachen haben willst such im Forum mal nach SGMLParser

Re: Von HTML-Tag zu HTML-Tag herausschreiben

Verfasst: Freitag 20. Mai 2005, 21:27
von gerold
michel hat geschrieben:... wobei ich nur den Teil zwischen zwei HTML-Tag-s angezeigt haben möchte...zB von <titles> bis </titles> oder von <Body> bis </body>, diesen Teil möchte ich dann mit einem anderen Block ersetzen können,fertig!
Hi Michel!

Das "re"-Modul ist dein Freund.

Hier ein Beispiel mit Ersetzung:
http://www.python-forum.de/viewtopic.php?p=18920#18920
Vorher noch ein "import re" hin und schon kann es los gehen.

Den Titel zu ersetzen würde so aussehen:

Code: Alles auswählen

import re

ersatztitel = "Das ist der neue Titel"

htmlstring = \
"""<html>
<head>
   <title>
      Das ist der alte Titel
   </title>
</head>
<body>
   <p>
      Irgendein Text...
   </p>
</body>
</html>
"""

re_obj = re.compile("<title>(.*?)</title>", re.M | re.I | re.S)
ergebnis = re_obj.sub("<title>%s</title>" % ersatztitel, htmlstring)
print ergebnis
mfg
Gerold
:-)

Re: Von HTML-Tag zu HTML-Tag herausschreiben

Verfasst: Sonntag 22. Mai 2005, 12:20
von mitsuhiko
gerold hat geschrieben:

Code: Alles auswählen

re_obj = re.compile("<title>(.*?)</title>", re.M | re.I | re.S)
ergebnis = re_obj.sub("<title>%s</title>" % ersatztitel, htmlstring)
print ergebnis
Oder noch einfacher:

Code: Alles auswählen

import re
ergebnis = re.sub("<title>(.*?)</title>(?uism)", htmlstring)
print ergebnis

Verfasst: Mittwoch 8. Juni 2005, 13:22
von Olliminatore
Ist zwar schon ein Weilchen her, aber ich bin grad beim suchen über dieses Modul hier BeautifulSoup gestolpert.
Für die, die nicht nochmal alles selber schreiben wollen. :Pl

Verfasst: Mittwoch 8. Juni 2005, 13:33
von jens
Also das Beispiel bei der Dokumentation zeigt schon ziemlich die Einfachheit des ganzen: http://www.crummy.com/software/Beautifu ... ation.html

Echt ein super Tipp!