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

如何基于两个标签和两个类提取指定单条HTML内容

精准提取指定td下的span元素

你的问题核心是未限制外层td的class范围,之前的代码仅筛选了span.cap(精确匹配类),所以会匹配到所有符合条件的span,不管它的父级td是什么类。以下是两种精准提取目标元素的方案:

方案1:分步定位(推荐,可读性强)

先定位到class为right的td标签,再在其内部筛选精确class为cap的span:

# 先找到目标td
target_td = soup.find('td', class_='right')
# 在td内精确匹配class为cap的span
salary_span = target_td.find('span', class_=['cap'])
# 若要获取文本内容
salary_text = salary_span.get_text()

注:BeautifulSoup中class_=['cap']会精确匹配仅包含cap这一个类的元素,自动排除多类情况(比如cap info)。

方案2:单步lambda筛选

直接在lambda表达式中同时检查span本身和其父级td的条件:

salary_span = soup.find(lambda tag: 
    tag.name == 'span' 
    and tag.get('class') == ['cap'] 
    and tag.parent.name == 'td' 
    and tag.parent.get('class') == ['right']
)

两种方案都能精准提取到你需要的<span class="cap">$13,000,000</span>元素,避免匹配到第一个td里的span。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:37:43