[Python-de] HTML-Datei auslesen, ändern , schreiben der Code ist onBlock
Diez B. Roggisch
deets at web.de
Don Jun 30 19:38:40 CEST 2005
Am Thursday, 30. June 2005 19:01 schrieb michel.koller at globonet.ch:
> Guten Tag
>
> Ich schreibe ein Skript welches eine HTML-Datei öffnet, ausliesst nd bei
> allen IMG-Tags das Attribut “alt” mit Text erweitert.
> Das funktioniert ganz gut, aber bei der neugeschriebene Datei ist der
> HTML-Code danch ganz am Block, alle Leeren Zeilen und Leerzeichen sind
> verschwunden.
> Ich möchte aber das die Datei danach gleich aussieht wie bevor Sie
> gelesen wurde.
>
> Ich vermute das ich da was mit dem Schreiben der Datei nicht richtig
> mache, weis aber nicht was
>
> Was mache ich da Falsch?
>
> def OnAlt(self, event):
> for file in DirectoryWalker("."):
> try:
> html = open(file).read()
> parser = aHTMLParser()
> parser.feed(html)
> parser.close()
> html = parser.res
> open(file, 'w').write(html)
> print file
> except:
> print "diese datei konnte nicht geöffnet werden"
> print "fertig mit alt ändern"
Das ist zwar Code und damit ein guter Start -- aber da wir weder wissen was
aHTMLParser() zurückgibt kann man dazu nix sagen.
Aber generell schon: Der whitespace zwischen html tags (heisst auch
"insignifikant") wird von xml/html-parsern gerne überlesen bzw. nur auf
"Anfrage" rausgegeben. Denn er ist eben unerheblich in allen Tags, die kein
#PCData oder ähnliches erlauben.
Wenn dein Problem ist das du wieder lesbarkeit herstellen willst, dann besteht
die einfache Lösung darin deinen generierten code duch einen html
pretty-printer zu jagen. Davon gibt's genug, google hilft wie immer.
Wenn es aber _genau_ der whitespace sein soll, dann musst du das deinem Parser
mitteilen - dazu müssen wir aber wissen, was dein parser genau ist.
MfG Diez