Skripta za izvlačenje korisnog iz MS Word HTML-a

Pripremajući materijale za Frizerski salon Vesna dobio sam cjenik usluga u Word formatu (.doc). Cjenik je zapravo jedna poveća tablica. Probao sam napraviti copy-paste te tablice u WordPress, ali naravno, dobio sam hrpu nepotrebnih stvari u HTML kodu. Zatim sam probao spremiti kao HTML, ali opet, puno previše smeća. Htio sam dobiti čistu tablicu sa table, tr i td elementima tako da kasnije mogu oblikovati tablicu CSS-om.

Evo primjera kako je izgledao loš HTML:

<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style=’border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
mso-yfti-tbllook:480;mso-padding-alt:0cm 5.4pt 0cm 5.4pt’>
<tr style=’mso-yfti-irow:0;mso-yfti-firstrow:yes’>
<td width=190 valign=top style=’width:142.7pt;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt’>
<p class=MsoNormal align=center style=’text-align:center’><b
style=’mso-bidi-font-weight:normal’><span style=’font-size:12.5pt’>Naziv
usluge<o:p></o:p></span></b></p>
</td>
<td width=121 valign=top style=’width:90.9pt;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt’>
<p class=MsoNormal align=center style=’text-align:center’><b
style=’mso-bidi-font-weight:normal’><span style=’font-size:12.5pt’>Kratka
kosa<o:p></o:p></span></b></p>
</td>….

Mogao sam to prepisati rukom, ali nekako sam bio umoran od WordPressa i dosadnog posla pa sam se htio malo odmoriti programirajući (konačno). Mislio sam da će sigurno biti još takvih problema u budućnosti pa sam napisao malu skriptu u Pythonu koja zadržava samo određene elemente unutar HTML-a i izbacuje sve atribute.

Upotreba: python FixWordHtml.py wordHtmlFile outputFile [includeElements]
Primjer: python FixWordHtml.py word.htm good.htm table tr td

Ovaj primjer bi uzeo word.htm datoteku i generirao datoteku good.htm koja bi sadržavala sav tekst iz originalne datoteke i samo table, tr i td elemente (bez atributa), tj. od one hrpe nepotrebnih elemenata i atributa dobili bi:

<table>
<tr>
<td>
Naziv
usluge
</td>
<td>
Kratka
kosa
</td>

Fix Word HTML


− two = 3

line
footer
©2009 Benkomat