Я использую python + BeautifulSoup для анализа HTML-документа.
Теперь мне нужно заменить все элементы <h2 class="someclass">
в документе HTML с помощью <h1 class="someclass">
.
Как изменить имя тега, не изменяя ничего в документе?
Я использую python + BeautifulSoup для анализа HTML-документа.
Теперь мне нужно заменить все элементы <h2 class="someclass">
в документе HTML с помощью <h1 class="someclass">
.
Как изменить имя тега, не изменяя ничего в документе?
Я не знаю, как вы обращаетесь к tag
, но для меня работает следующее:
import BeautifulSoup
if __name__ == "__main__":
data = """
<html>
<h2 class='someclass'>some title</h2>
<ul>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
<li>Vestibulum auctor dapibus neque.</li>
</ul>
</html>
"""
soup = BeautifulSoup.BeautifulSoup(data)
h2 = soup.find('h2')
h2.name = 'h1'
print soup
Вывод команды print soup
:
<html>
<h1 class='someclass'>some title</h1>
<ul>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
<li>Vestibulum auctor dapibus neque.</li>
</ul>
</html>
Как вы можете видеть, h2
стал h1
. И ничего больше в документе не изменилось. Я использую Python 2.6 и BeautifulSoup 3.2.0.
Если у вас более одного h2
, и вы хотите изменить их все, вы можете просто сделать:
soup = BeautifulSoup.BeautifulSoup(your_data)
while True:
h2 = soup.find('h2')
if not h2:
break
h2.name = 'h1'
Это просто:
tag.name = 'new_name'
from BeautifulSoup import BeautifulSoup, Tag
soup = BeautifulSoup("<h2 class="someclass">TEXTHERE</h2>")
tag = Tag(soup, "h1", [("class", "someclass")])
tag.insert(0, "TEXTHERE")
soup.h2.replaceWith(tag)
print soup
# <h1 class="someclass">TEXTHERE</h1>