贝利信息

如何使用 BeautifulSoup 提取文本及其对应的 HTML 标签名

日期:2026-01-04 00:00 / 作者:心靈之曲

本文介绍如何通过 beautifulsoup 遍历 html 元素,准确获取每个标签内的纯文本内容及其原始标签名(如 `p`、`h1`),并避免常见解析陷阱。

在使用 BeautifulSoup 解析 HTML 片段时,一个常见需求是:同时提取每段文本及其所属的 HTML 标签名称(如

对应 'p',

对应 'h1')

。初学者常误用 tag.tag 或尝试遍历 soup 根对象的直接子节点,结果因混入 NavigableString(如空白符、换行)而报错——NavigableString 对象没有 tag 属性,也无 name。

正确做法是:使用 soup.find_all() 获取所有标签元素(不包括文本节点),再通过 .text 获取渲染后纯文本,用 .name 属性获取标签名。注意:.name 是 BeautifulSoup 中表示标签名称的标准属性(例如

的 tag.name 为 'div'),而非 .tag(该属性不存在)。

以下为完整示例代码:

from bs4 import BeautifulSoup

html = '''

Some text

Some text

More content''' soup = BeautifulSoup(html, 'html.parser') # 推荐显式指定解析器 for tag in soup.find_all(): print(f"'{tag.text}' → <{tag.name}>")

输出结果:

'Some text' → 

'Some text' →

'More content' →

关键注意事项

掌握 tag.name 与 tag.text 的组合使用,即可稳健实现“文本–标签”映射,为后续内容分析、结构化抽取或模板渲染打下基础。