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

关于使用BeautifulSoup提取指定标签文本的技术咨询

关于使用BeautifulSoup提取指定标签文本的技术咨询

嘿,我来帮你搞定这个提取百分比文本的需求!你要忽略带class="label-negative"的<span>,只抓带有特定颜色样式的<span>里的数值,对吧?结合你已经拿到的cont集合,咱们可以这么做:

首先,你已经通过soup.find_all获取了目标<td>元素的列表,接下来只需要逐个遍历这些<td>,在里面筛选符合条件的<span>就行。

基础实现代码

直接针对你提到的两个颜色值做精准匹配,同时排除掉带有label-negative类的span:

# 遍历每个拿到的td元素
for td in cont:
    # 筛选出符合颜色样式且不是label-negative的span
    target_spans = td.find_all(
        "span",
        # 匹配指定的颜色样式
        style=lambda val: val and (val == "color: #3F8539" or val == "color: #A9CF54"),
        # 排除带有label-negative类的span
        class_=lambda val: val != "label-negative"
    )
    # 提取每个符合条件的span文本
    for span in target_spans:
        # 去除文本前后的空白字符
        percent_value = span.get_text(strip=True)
        print(percent_value)  # 这里可以换成你需要的存储或处理逻辑

更鲁棒的版本(应对样式里的空格/额外字符)

有时候网页里的style属性可能会有多余空格或者分号,比如color: #3F8539;,这时候用正则匹配会更稳妥:

import re

# 编译正则表达式,匹配两种颜色,忽略空格和大小写
style_regex = re.compile(r'color:\s*(#3F8539|#A9CF54)', re.IGNORECASE)

for td in cont:
    target_spans = td.find_all(
        "span",
        # 用正则检查style是否包含目标颜色
        style=lambda val: val and style_regex.search(val),
        class_=lambda val: val != "label-negative"
    )
    for span in target_spans:
        percent_value = span.get_text(strip=True)
        print(percent_value)

这样就能精准提取到你想要的百分比文本啦,完全避开了不需要的label-negative标签~

备注:内容来源于stack exchange,提问作者Rizal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 12:59:29