java 如何使用Jsoup从HTML内容中获取CSS样式属性

lndjwyie  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(470)

我尝试使用Jsoup从HTML div标签中获取Style属性。请参阅下面的div标签。

<div id="badge" class="er-badge" style="width: 576px; height: 369px; background: url(&quot;http://localhost:1020/er/ERImg/firmUploads/13854/LogoImg4.png&quot;) 0% 0% / cover no-repeat; z-index: 1; position: relative;" tabindex="0" data-preview-purposes="checked">

从这个div标签样式中,我只想提取background:属性。

String style = Element.attr("style");

但是,我想只提取背景属性值。是否可以使用Jsoup或请告诉任何其他简单的方法来提取属性。提前感谢。

zpgglvta

zpgglvta1#

很高兴看到这个问题,而不是有人试图使用正则表达式手动解析。
就像we should not parse html ourself一样,手动解析CSS也是不可取的。
已经有可用的库-cssparserhtmlunit-cssparser来完成这项工作。我们可以得到background的CSS值如下:

import org.htmlunit.cssparser.dom.CSSStyleDeclarationImpl;
import org.htmlunit.cssparser.parser.CSSOMParser;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;

import java.io.IOException;

public class ParseStyle {
    public static void main(String[] args) throws IOException {
        Element e = Jsoup.parseBodyFragment("""
                <div id="badge" class="er-badge" style="width: 576px; height: 369px; background: url(&quot;http://localhost:1020/er/ERImg/firmUploads/13854/LogoImg4.png&quot;) 0% 0% / cover no-repeat; z-index: 1; position: relative;" tabindex="0" data-preview-purposes="checked"> 
                 """);
        String style = e.select("div").attr("style");
        CSSOMParser parser = new CSSOMParser();
        CSSStyleDeclarationImpl decl = parser.parseStyleDeclaration(style);
        System.out.println(decl.getPropertyCSSValue("background"));
    }
}

相关问题