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

如何用BeautifulSoup按顺序获取元素及其子元素的文本内容?

解决方法

你的问题出在findChildren()只会返回元素下的标签子元素,完全忽略了直接属于<td>的文本节点(比如" is placement "这类内容),所以才漏掉了部分文本。下面是两种可行的解决方案:

方法1:用get_text()直接提取(最简便)

BeautifulSoup内置的get_text()方法可以一次性提取元素及其所有后代的文本,还能自动处理杂乱的空格和换行:

# d 是你定位到的<td>元素
full_text = d.get_text(strip=True, separator=' ')
print(full_text)
# 输出结果:This is placement text to demonstrate my point
  • strip=True:移除每个文本片段前后的空白字符
  • separator=' ':用单个空格连接所有文本片段,避免出现多余的换行或连续空格

方法2:手动遍历所有节点(自定义控制)

如果需要更精细的文本处理逻辑,可以遍历元素的所有后代节点(包括文本节点),而不是只遍历标签:

from bs4 import NavigableString

full_text = ''
# 遍历<td>的所有后代节点(文本+标签)
for node in d.descendants:
    # 判断是否为文本节点
    if isinstance(node, NavigableString):
        cleaned = node.strip()
        if cleaned:
            full_text += cleaned + ' '
# 移除末尾多余的空格
full_text = full_text.strip()
print(full_text)

内容的提问来源于stack exchange,提问作者nickbagley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:52:12