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

Python BeautifulSoup如何精准获取score2对应的span标签值

原因说明

soup.find() 的默认逻辑是仅返回DOM中第一个匹配筛选规则的元素,因此你当前的查询代码只会定位到第一个class为percentage的span节点(即data-qa="score1"、内容为95%的节点),无法直接获取第二个目标节点。

可直接使用的实现方案

方案1:精准属性匹配(推荐,稳定性最高)

直接在find()的筛选条件中加入data-qa属性的匹配规则,一步定位目标节点,不受节点顺序变动影响:

# 匹配class为percentage、且data-qa属性值为score2的span
target_node = soup.find('span', class_='percentage', attrs={'data-qa': 'score2'})
# 调用strip()清除文本前后多余的换行、空格,拿到干净结果
result = target_node.text.strip()
# 输出结果为 77%

方案2:批量获取所有匹配节点后取值

用soup.find_all()替代soup.find(),该方法会返回所有符合筛选规则的节点组成的列表,既可以按索引直接取第二个节点,也可以遍历列表按属性筛选:

# 获取所有class为percentage的span节点,返回列表
all_percent_nodes = soup.find_all('span', class_='percentage')

# 方式A:按索引取值,第二个节点索引为1
result = all_percent_nodes[1].text.strip()

# 方式B:遍历按属性筛选,适合节点顺序可能变动的场景
for node in all_percent_nodes:
    if node.get('data-qa') == 'score2':
        result = node.text.strip()
        break

注意:原始HTML中目标标签的文本前后带有大量换行和缩进空白,提取文本后必须调用.strip()处理,否则得到的结果会包含大量冗余的空白字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:15:35