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

如何使用BeautifulSoup提取HTML元素文本并保留指定内部标签

实现方案

你可以直接移除目标<p>标签下的无用<a>节点,再提取内部HTML内容,比手动操作.contents拼接更规范,具体实现如下:

基础实现(会修改原标签对象)

from bs4 import BeautifulSoup

# 假设你已获取到目标p标签对象,命名为p_tag
# 移除p标签下所有<a>节点
for a_node in p_tag.find_all("a"):
    a_node.decompose()

# 提取p标签内部完整HTML内容,自动保留<sup>等其余标签
target_content = p_tag.decode_contents()
print(target_content)
  • decompose():将对应节点从DOM树中彻底移除,无返回值
  • decode_contents():返回标签内部的HTML字符串,不会将内部标签转为纯文本,符合你保留<sup>标签的需求

不修改原标签对象的实现

如果你需要保留原p标签的完整结构,可以先深拷贝一份再操作:

import copy
from bs4 import BeautifulSoup

p_tag_copy = copy.deepcopy(p_tag)
for a_node in p_tag_copy.find_all("a"):
    a_node.decompose()
target_content = p_tag_copy.decode_contents()

精准过滤要删除的标签

如果p标签下还有其他有用的<a>标签需要保留,可以给find_all添加过滤条件,比如仅删除id以_Toc开头的锚点标签:

for a_node in p_tag.find_all("a", id=lambda x: x and x.startswith("_Toc")):
    a_node.decompose()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:06:03