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

如何用BeautifulSoup提取div中sup标签内容并移除img标签?

解决方案

方法1:直接提取<sup>标签内容(最简单)

如果核心需求只是获取<sup>里的文本,完全不需要先处理<img>相关元素,直接定位标签提取内容即可:

from bs4 import BeautifulSoup

html = """<div>Hello everyone how are you<sup>Hello hi</sup><figure>Blah Blah<img /><figure></div>"""
soup = BeautifulSoup(html, 'html.parser')

# 直接定位sup标签并提取文本
sup_text = soup.find('sup').get_text(strip=True)
print(sup_text)  # 输出: Hello hi

方法2:清理<img>相关元素后保留<sup>

如果需要先移除<img>及包含它的容器(比如示例里的<figure>),再处理内容,要精准定位待删除的元素,避免误删<sup>:

from bs4 import BeautifulSoup

html = """<div>Hello everyone how are you<sup>Hello hi</sup><figure>Blah Blah<img /><figure></div>"""
soup = BeautifulSoup(html, 'html.parser')

target_div = soup.find('div')

# 方案A:删除所有<img>标签
for img in target_div.find_all('img'):
    img.decompose()

# 方案B:删除包含<img>的整个<figure>标签(更彻底)
for figure in target_div.find_all('figure'):
    figure.decompose()

# 此时div里已无img相关内容,再提取sup文本
sup_text = target_div.find('sup').get_text(strip=True)
print(sup_text)  # 输出: Hello hi

为什么之前decompose()会破坏<sup>?

大概率是你在选择待删除元素时范围过大,比如误删了<div>下的所有子元素,或者错误地将<sup>也纳入了删除列表。只要精准定位到<img>或其容器(如<figure>)进行删除,就不会影响<sup>标签。

内容的提问来源于stack exchange,提问作者Pradeep Karthik Muthusamy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:15:33