剥去Beautifulsoup中的第一个(顶级)标签

时间:2015-12-07 19:18:18

标签: python html tags beautifulsoup strip

我创造了一个汤:

from bs4 import BeautifulSoup
soup = BeautifulSoup("<div><p>My paragraph <a>My link</a></p></div>","html.parser")

我想剥离第一个顶级标记以显示其内容,无论标记如何:

<p>My paragraph<a>My link</a></p>
与所有孩子一起。所以我不希望找到像soup.find("div")这样的标签来替换,而是按位置进行替换。

如何做到这一点?

2 个答案:

答案 0 :(得分:2)

使用提供的.unwrap()功能:

from bs4 import BeautifulSoup
soup = BeautifulSoup("<div><p>My paragraph <a>My link</a></p><p>hello again</p></div>","html.parser")

soup.contents[0].unwrap()

print soup
print len(soup.contents)

结果:

<p>My paragraph <a>My link</a></p><p>hello again</p>
2

答案 1 :(得分:1)

也许你可以使用它的孩子?

soup.findChildren()[1] - &gt; <p>My paragraph <a>My link</a></p>

soup.findChildren()[0]返回包含div元素的元素本身。所以索引1将是第一个孩子。