如何使用 BeautifulSoup 用其内容替换标签?

Bla*_*ner 6 python beautifulsoup

我将如何使用 BeautifulSoup删除标签?我找到的方法会删除标签以及其中的所有其他标签和内容。我只想删除标签并保留其中的所有内容不变,例如

改变这个:

<div>
<p>dvgbkfbnfd</p>
<div>
<span>dsvdfvd</span>
</div>
<p>fvjdfnvjundf</p>
</div>
Run Code Online (Sandbox Code Playgroud)

对此:

<p>dvgbkfbnfd</p>
<span>dsvdfvd</span>
<p>fvjdfnvjundf</p>
Run Code Online (Sandbox Code Playgroud)

Mar*_*air 7

我已经投票关闭作为一个副本,但如果它有用,从右边最相关的答案中重新应用slacy 的答案会给你这个解决方案:

from BeautifulSoup import BeautifulSoup

html = '''
<div>
<p>dvgbkfbnfd</p>
<div>
<span>dsvdfvd</span>
</div>
<p>fvjdfnvjundf</p>
</div>
'''

soup = BeautifulSoup(html)
for match in soup.findAll('div'):
    match.replaceWithChildren()

print soup
Run Code Online (Sandbox Code Playgroud)

...产生输出:

<p>dvgbkfbnfd</p>

<span>dsvdfvd</span>

<p>fvjdfnvjundf</p>
Run Code Online (Sandbox Code Playgroud)

  • 注意:根据 https://www.crummy.com/software/BeautifulSoup/bs4/doc/#method-names :从 BS4 开始,最好使用“unwrap”而不是“replaceWithChildren”。 (2认同)