2015-12-07 18 views
1

第一(頂層)標籤創建一個湯:地帶Beautifulsoup

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

使用提供.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

也許你可以使用它的子女?

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

soup.findChildren()[0]返回含有div元素的元素本身。因此,索引1將是第一個孩子。

+0

這會忽略其他孩子的標籤下,例如如果有另一段與第一段相同。 – hosolmaz

+0

此代碼提取您所問的「第一個頂級標記」。你的意思是「標籤」而不是「標籤」? – AliBZ