如何使用 BeautifulSoup 精确提取嵌套 span 中的纯文本内容


本文介绍如何利用 beautifulsoup 的 `contents` 属性,精准提取外层 `` 中不包含子元素的直接文本节点(如“felix wong”),避免 `get_text()` 返回嵌套子元素内容的问题。

在网页解析中,常遇到类似如下结构的 HTML:

Felix Wong +3 drivers

若直接调用 .get_text(),会合并所有后代文本,返回 "Felix Wong +3 drivers" —— 这通常不符合需求,尤其当只需提取父级标签中的直接文本节点(即不被子标签包裹的部分)时。

此时应改用 .contents 属性:它返回一个包含所有直接子节点(包括字符串节点和标签节点)的列表。其中,纯文本内容作为 NavigableString 对象位于索引 0(前提是文本出现在子标签之前),而 则是索引 1 的 Tag 对象。

✅ 正确做法:

from bs4 import BeautifulSoup

html = '''Felix Wong +3 drivers'''
soup = BeautifulSoup(html, 'html.parser')

# 获取第一个直接子节点(即" Felix Wong ",含前后空格)
raw_text = soup.select_one('span').contents[0]

# 推荐:strip() 去除首尾空白,确保结果干净
name = raw_text.strip()  # 输出: "Felix Wong"
print(name)

⚠️ 注意事项:

  • .contents[0] 仅在目标文本位于子标签之前时有效。若 HTML 为 +3 driversFelix Wong,则文本在索引 1,需先遍历 .contents 并筛选 isinstance(node, str) 的字符串节点。
  • 更健壮的写法(兼容任意位置):
    parent = soup.select_one('span')
    name = ''.join([str(s) for s in parent.contents if isinstance(s, str)]).strip()
  • 始终指定解析器(如 'html.parser'),避免警告;生产环境推荐 'lxml'(需安装)以提升性能与容错性。

总结:.get_text() 适用于获取全部可见文本,而 .contents 是精准控制文本来源层级的关键工具——掌握其节点类型区分(str vs Tag),即可灵活应对复杂嵌套文本提取场景。


# html  # node  # 工具  # beautifulsoup  # 字符串  # class  # 对象  # 第一个  # 则是  # 出现在  # 遍历  # 只需  # 适用于  # 不符合  # 时应  # 中不  # 即不 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Win10怎么卸载剪映_Win10彻底卸载剪映方法【步骤】  Win11怎么更改系统语言_Win11中文语言包下载与安装【指南】  Win11怎么关闭系统提示音_Windows11声音方案设为无声教程  Mac如何备份到iCloud_Mac桌面与文稿文件夹云同步【设置】  Win11怎么查看硬盘型号_Windows 11检测硬盘信息方法【技巧】  PHP主流架构如何处理会话管理_Session与Cookie【技巧】  Win10如何关闭安全中心所有通知 Win10禁用Windows Defender提醒【设置】  Win11怎么查看局域网电脑_Windows 11网络邻居发现设置【技巧】  php会话怎么开启_session_start函数的作用与使用时机【方法】  Go 中 := 短变量声明的类型推导机制详解  PythonPandas数据分析教程_数据清洗与处理技巧  Go 中实现 Python urllib.quote() 等效功能的正确方式  Windows如何查看和管理已安装的字体?(字体文件夹)  Win10文件历史记录怎么用 Win10开启自动备份文件教程【防丢】  Windows10如何更改桌面图标间距_Win10注册表WindowMetrics修改  c++如何实现多态性_c++ 虚函数表原理与动态绑定机制【教程】  Win11怎么设置开机密码_Windows11账户登录选项PIN码  Windows10系统怎么查看运行时间_Win10 CPU正常运行时间查询  windows如何测试网速_windows系统网络速度测试方法  Python对象比较排序规则_集合使用说明【指导】  php错误怎么开启_display_errors与log_errors的设置【汇总】  Python并发安全问题_资源竞争说明【指导】  Win11怎么关闭小组件_Win11禁用任务栏天气与小组件方法【设置】  如何在包含多值的列中精准搜索指定演员?  php删除数据怎么软删除_添加is_del字段标记删除【技巧】  Win11怎么更改鼠标指针方案_Windows11自定义鼠标光标样式与大小  Windows服务启动类型恢复方法_错误修改导致的系统服务异常  Win10如何设置双wan路由器 Win10双wan路由器设置方法【指南】  Win11文件扩展名怎么显示 Win11查看文件后缀名设置【步骤】  Windows10电脑怎么设置自动连接WiFi_Win10无线网络属性勾选  Windows10如何更改系统字体大小_Win10辅助功能文本缩放设置  为什么Go需要go mod文件_Go go mod文件作用说明  Win10怎么卸载金山毒霸_Win10彻底卸载金山毒霸方法【步骤】  如何在Golang中处理数据库事务错误_回滚和日志记录  Windows服务持续崩溃怎样修复_系统服务保护机制解析  Mac怎么开启“任何来源”_Mac安装未签名应用的设置方法【解决】  Python音视频处理高级项目教程_FFmpegPydub剪辑与特效  如何使用Golang开发基础文件下载功能_Golang HTTP文件响应与缓存实现  Win11如何更改任务栏颜色 Win11自定义任务栏背景色【美化】  Windows10电脑怎么设置文件权限_Win10安全选项卡所有者修改  Win10怎样设置多显示器_Win10多显示器扩展设置【攻略】  如何使用Golang安装依赖库_管理模块和第三方包  如何在同包不同文件中正确引用 Go 结构体  Linux如何使用grep搜索文件内容_Linux下正则表达式匹配与查找技巧【指南】  c++的STL算法库find怎么用 在容器中查找指定元素【实用教程】  Python多线程使用规范_线程安全解析【教程】  Win11怎么设置任务栏图标大小_Windows11注册表TaskbarSi修改  Win11怎么开启空间音效_Windows11耳机杜比音效与Sonic设置  如何在 Laravel 中通过嵌套关联关系进行 orderBy 排序  php转mp4怎么设置帧率_调整php生成mp4视频帧率说明【说明】 

 2025-12-30

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.