Skip to main content
 首页 » 编程设计

python之BeautifulSoup之将带有标签的文本提取为文本

2025年05月04日12qq号

假设我有 html

<div>Hey</div><div>This is <b>some text<b/>, right here. <a>Link<a/></div> 

代码

soup = BeautifulSoup(html) 
texts = soup.findAll(text=True) 

print() 会返回

['Hey', 'This is ', 'some text', ', right here.', 'Link'] 

用于文本。

我怎样才能排除像“b”这样的标签(只包含文本),所以我可以获得所需的输出

['Hey', 'This is <b>some text<b/>, right here.', 'Link'] 

最好不是字符串,而是等效的 NavigableStrings 或类似字符串。

换句话说,我怎样才能从导航树中排除一些标签?

请您参考如下方法:

基于更新的 OP 问题:

eDiv = soup.findAll("div") 
if eDiv.find("b") is None: 
    tag = eDiv.text 
else: 
    tag = eDiv 

现在您可以将其附加到列表中。