BeautifulSoup4:用另外2个替换标签

时间:2017-01-25 21:25:56

标签: python python-3.x beautifulsoup

我想将<h1>title</h1>替换为<b><u>title</u></b>

我知道我可以使用h1

b替换为soup.h1.name = "b"

但有没有办法用其他几个替换单个标签?

(丹尼尔罗斯曼特别编辑:标签并不重要......

2 个答案:

答案 0 :(得分:1)

使用wrap()

来自文档:

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>

答案 1 :(得分:1)

感谢RobertB,我可以找出答案的其余部分。

你需要:

  1. 使用新标记h1
  2. 打包p
  3. 使用新标记h1
  4. 打包u
  5. 删除标记h1(使用unwrap()
  6. <!-- 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>