Von HTML-Tag zu HTML-Tag herausschreiben

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.
michel

Von HTML-Tag zu HTML-Tag herausschreiben

Beitragvon michel » Freitag 20. Mai 2005, 09:01

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
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 20. Mai 2005, 10:48

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Von HTML-Tag zu HTML-Tag herausschreiben

Beitragvon gerold » Freitag 20. Mai 2005, 21:27

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Re: Von HTML-Tag zu HTML-Tag herausschreiben

Beitragvon mitsuhiko » Sonntag 22. Mai 2005, 12:20

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
TUFKAB – the user formerly known as blackbird
Benutzeravatar
Olliminatore
User
Beiträge: 55
Registriert: Montag 30. Mai 2005, 16:03
Wohnort: schönsten Stadt Deutschlands
Kontaktdaten:

Beitragvon Olliminatore » Mittwoch 8. Juni 2005, 13:22

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
Love Jamba <!--Olliminatore-->input<?/> Boycott Jamba

Code: Alles auswählen

def olliminiert(optimiert, eliminiert, terminiert):
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 8. Juni 2005, 13:33

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!

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder