[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