用 BeautifulSoup 替换 html 标签

Pwn*_*nna 3 python beautifulsoup

我目前正在使用 BeautifulSoup 重新格式化一些 HTML 页面,但遇到了一些问题。

我的问题是原始 HTML 具有以下内容:

<li><p>stff</p></li>
Run Code Online (Sandbox Code Playgroud)

<li><div><p>Stuff</p></div></li>
Run Code Online (Sandbox Code Playgroud)

<li><div><p><strong>stff</strong></p></div><li>
Run Code Online (Sandbox Code Playgroud)

使用 BeautifulSoup,我希望消除 div 和 p 标签(如果存在),但保留强标签。

我正在浏览漂亮的汤文档,但找不到任何文档。想法?

谢谢。

Suz*_*ana 8

这个问题可能refered旧版本BeautifulSoup的,因为与BS4,你可以简单地使用展开功能:

s = BeautifulSoup('<li><div><p><strong>stff</strong></p></div><li>')
s.div.unwrap()
>> <div></div>
s.p.unwrap()
>> <p></p>
s
>> <html><body><li><strong>stff</strong></li><li></li></body></html>
Run Code Online (Sandbox Code Playgroud)


jat*_*ism 7

您可以使用replaceWith. 您必须复制要用作替换的元素,然后将其作为参数提供给replaceWith。有关如何执行此操作的文档replaceWith非常清楚。

  • FWIW,http://www.crummy.com/software/BeautifulSoup/bs4/doc/#replace-with 是 bs4 文档 (7认同)

use*_*164 7

我看到了这个简单问题的很多答案,我也来这里看看一些有用的东西,但不幸的是我没有得到我想要的东西,然后经过几次尝试我找到了这个答案的一个简单的解决方案,这里是

soup = BeautifulSoup(htmlData, "html.parser")

h2_headers = soup.find_all("h2")

for header in h2_headers:
    header.name = "h1" # replaces h2 tag with h1 
Run Code Online (Sandbox Code Playgroud)

所有 h2 标签都转换为 h1。您只需更改名称即可转换任何标签。