You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用BeautifulSoup提取div直接文本,排除内部标签内容?

提取外层div的直接文本(排除嵌套标签内容)

你可以通过提取外层div的直接文本子节点来实现需求,避免.text方法递归抓取所有子标签文本的问题,以下是两种实用方案:

方案一:筛选直接子节点中的字符串

遍历div的直接子节点,仅保留NavigableString类型的内容并拼接:

from bs4 import BeautifulSoup, NavigableString

html = '<div class="content"> Hello World It is good to see you.<span>hi<img/></span></div>'
soup = BeautifulSoup(html, 'html.parser')
target_div = soup.find('div', class_='content')

# 过滤并拼接直接文本节点
result = ''.join([str(node) for node in target_div.contents if isinstance(node, NavigableString)]).strip()
print(result)  # 输出:Hello World It is good to see you.

方案二:直接获取首个直接文本节点

如果目标文本是div的第一个子节点,可直接用next_element快速获取:

from bs4 import BeautifulSoup

html = '<div class="content"> Hello World It is good to see you.<span>hi<img/></span></div>'
soup = BeautifulSoup(html, 'html.parser')
target_div = soup.find('div', class_='content')

result = target_div.next_element.strip()
print(result)  # 输出:Hello World It is good to see you.

原理说明

.text方法会递归遍历当前节点下的所有子节点,将所有文本内容拼接返回;而上述方法仅处理div的直接子节点中的字符串,不会深入到嵌套的<span>、<img>等标签内部。

内容的提问来源于stack exchange,提问作者Pradeep Karthik Muthusamy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:24:21