Seite 1 von 1

HTML tags verschieben

Verfasst: Mittwoch 4. September 2013, 22:04
von MarcelF6
Hallo miteinander

Wie kann man (am liebsten mit lxml oder einer String-Funktion) Tags in einem html-file verschieben?
Konkret geht es darum, Tags wie "<span style=" letter-spacing:0.40pt;">" (wobei 0.40pt variabel ist), die nach den <b> stehen, vor die <b>-tags zu bringen.
Beispiel: Wenn ich sowas als Ausgangslage habe:

Code: Alles auswählen

<b>TEXT1 </b><b>TEXT2 </b><b>TEXT3 </b><b>TEXT4</b><span style=" letter-spacing:0.45pt;"></span><span style=" letter-spacing:5.55pt;"></span></span></div>
Dann hätte ich gerne folgenden Output:

Code: Alles auswählen

<span style=" letter-spacing:0.45pt;"><b>TEXT1 </b></span><b>TEXT2 </b><span style=" letter-spacing:5.55pt;"><b>TEXT3 </b></span><b>TEXT4</b></span></div>
Wenn beim ersten <b> bereits eine "letter-spacing"-Angabe vorhanden ist, muss natürlich nicht noch eine dorthin verschoben werden. Beispiel:

Code: Alles auswählen

<span class="font48" style=" line-height:8.16pt; letter-spacing:0.40pt;"><b>TEXT1 </b><b>...... </b><b>TEXT2</b><span style=" letter-spacing:0.00pt;"></span><span style=" letter-spacing:0.10pt;"></span></span></div>
sollte resultieren in:

Code: Alles auswählen

<span class="font48" style=" line-height:8.16pt; letter-spacing:0.40pt;"><b>TEXT1 </b><span style=" letter-spacing:0.00pt;"><b>...... </b></span></span><span style=" letter-spacing:0.10pt;"><b>TEXT2</b></span></div>
Wie könnte man das bewerkstelligen?
Ich dachte an etwas wie folgendes:

Code: Alles auswählen

for item in soup.findAll(['span', 'b']):
    if item.name == 'span style':
        text = item
    if item.name == 'b':
        text.insert(len(text.contents), item)
Nur leider funktioniert das noch nicht ganz so wie gewünscht...

Besten Dank für jeden Tipp!

Re: HTML tags verschieben

Verfasst: Mittwoch 4. September 2013, 23:10
von Sirius3
Hallo MarcelF6,
'span style' ist wohl kaum ein Name. Eine »findAll«-Methode mit diesem Parameter ist mir auch unbekannt.
Wie die <span>s auf die <b>s aufgeteilt werden sollen ist mir auch unklar.
Am Besten baust Du einen komplett neuen Teilbaum mit der gewünschten Struktur auf.