HTML tags verschieben

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.
Antworten
MarcelF6
User
Beiträge: 226
Registriert: Samstag 3. März 2012, 21:30

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!
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

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