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

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

解决BeautifulSoup提取元素文本与对应标签的问题

问题原因

直接遍历soup或使用soup.find_all()时,结果会包含NavigableString类型的纯文本节点,这类节点没有tag属性,导致调用报错。只有Tag类型的节点才具备标签相关属性。

解决方案

方法1:过滤Tag类型节点后处理

遍历过程中先判断节点是否为Tag对象,再提取标签名和文本:

from bs4 import BeautifulSoup, Tag

text = "<p>Some text</p> <h1>Some text</h1> <div>Another content</div>"
soup = BeautifulSoup(text, "html.parser")

for element in soup:
    if isinstance(element, Tag):
        print(f"标签: {element.name}")
        print(f"文本: {element.get_text(strip=True)}")
        print("---")

方法2:用find_all精准过滤

可以通过find_all()的参数直接筛选出Tag节点,或指定具体标签类型:

# 提取所有Tag节点
for tag in soup.find_all(lambda x: isinstance(x, Tag)):
    print(f"标签: {tag.name}, 文本: {tag.get_text(strip=True)}")

# 仅提取指定标签(比如p和h1)
for tag in soup.find_all(['p', 'h1']):
    print(f"标签: {tag.name}, 文本: {tag.get_text(strip=True)}")

额外提示

  • element.get_text(strip=True)会自动去除文本两端的空白字符,比element.text输出更整洁;如果需要保留原始空格/换行,去掉strip=True即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:51:55