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

如何使用Jsoup从HTML元素的style属性中提取background值

提取style属性中的background值(基于Jsoup)

Jsoup本身没有直接解析style内单个CSS属性的内置API,但可以结合字符串处理或正则表达式快速提取目标值,以下是两种实用方法:


方法1:手动分割解析style字符串

先通过Jsoup拿到完整的style属性,再分割为单个CSS属性对,遍历筛选出background属性:

// 1. 获取目标div元素
Element badgeDiv = doc.select("#badge").first();
if (badgeDiv == null) {
    // 处理元素不存在的情况
    return;
}
// 2. 获取完整style属性内容
String styleContent = badgeDiv.attr("style");
// 3. 分割为单个属性对
String[] styleItems = styleContent.split(";");
String backgroundValue = null;

// 遍历查找background属性
for (String item : styleItems) {
    String trimmedItem = item.trim();
    if (trimmedItem.startsWith("background:")) {
        // 提取冒号后的属性值,去除首尾空格
        backgroundValue = trimmedItem.substring(trimmedItem.indexOf(":") + 1).trim();
        break;
    }
}

// 处理HTML转义的引号(原style中用"代替")
if (backgroundValue != null) {
    backgroundValue = backgroundValue.replace(""", "\"");
    // 此时backgroundValue就是你要的完整值
    System.out.println(backgroundValue);
}

方法2:正则表达式匹配

如果觉得分割遍历繁琐,可以用正则直接匹配background属性的取值范围:

Element badgeDiv = doc.select("#badge").first();
if (badgeDiv == null) {
    return;
}
String styleContent = badgeDiv.attr("style");

// 正则匹配:匹配background: 后面直到分号或字符串结束的内容
Pattern bgPattern = Pattern.compile("background:\\s*(.*?)(?=;|$)");
Matcher matcher = bgPattern.matcher(styleContent);

if (matcher.find()) {
    String backgroundValue = matcher.group(1).trim();
    // 替换转义引号
    backgroundValue = backgroundValue.replace(""", "\"");
    System.out.println(backgroundValue);
}

注意事项

  • 上述方法针对的是完整的background简写属性,如果需要提取background-image这类子属性,只需把匹配条件改成startsWith("background-image:")或调整正则即可。
  • 原HTML中的"是HTML转义字符,对应普通双引号,提取后需要替换才能得到正常的URL格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:20:19