2017-01-25 1 views
0

Ich mag ersetzen <h1>title</h1> mit <b><u>title</u></b>BeautifulSoup4: einen Tag mit 2 anderen ersetzen

Ich weiß, ich h1 mit b ersetzen kann soup.h1.name = "b"

Verwendung Aber ist es eine Möglichkeit, einen einzelnen Tag durch mehr andere zu ersetzen?

(Special Edit für Daniel Roseman: die Tags wirklich keine Rolle spielen ...)

+0

Schöne Suppe kann kein ungültiges Markup erzeugen, was das ist. –

+0

@DanielRoseman können Sie bitte die Bedeutung von "Getränk" erklären? (Ich bin kein englischer Muttersprachler) –

+0

Meinst du diese Tags sind ungültig? (die Tags sind in der Frage nicht wirklich wichtig) –

Antwort

1

Verwenden wrap()

Aus der Dokumentation:

soup = BeautifulSoup("<p>I wish I was bold.</p>") 
soup.p.string.wrap(soup.new_tag("b")) 
# <b>I wish I was bold.</b> 

soup.p.wrap(soup.new_tag("div")) 
# <div><p><b>I wish I was bold.</b></p></div> 
+0

es war ein bisschen komplexer, da ich nicht alle 'p' in' b' ändern wollte, aber dank Ihrer Hilfe konnte ich den Rest herausfinden und die schreiben Antwort unten. –

+0

Siehe, Lesen der Dokumentation hilft. – RobertB

0

dank RobertB ich konnte Finde den Rest der Antwort heraus.

Sie benötigen:

  1. die h1 mit neuen Tags wickeln p
  2. wickeln die h1 mit neuen Tags u
  3. entfernen Sie den Tag h1 (mit unwrap())
<!-- language: python --> 
from bs4 import BeautifulSoup 
soup = BeautifulSoup("<h1>title</h1>", "html.parser") 
soup.h1.string.wrap(soup.new_tag("b")) 
print(soup) # >> <h1><b>title</b></h1> 

soup.h1.string.wrap(soup.new_tag("u")) 
print(soup) # >> <h1><b><u>title</u></b></h1> 

soup.h1.unwrap() 
print(soup) #>> <b><u>title</u></b> 
+0

Sorry, Stapel erkennt es nicht als Python-Code (und nicht HTML), wenn jemand weiß, wie es geht ... –

+0

@glibdub thanks! Wie hast du es gemacht? (Was war falsch in meinem Versuch?) –

+0

Verwenden Sie einfach die Tasten im kleinen Editor. Versuchen Sie nicht, HTML in einem Post zu schreiben. – RobertB

Verwandte Themen