提问人:Kavi Chinna 提问时间:4/13/2023 最后编辑:samabcdeKavi Chinna 更新时间:4/19/2023 访问量:235
如何使用 Jsoup 从 HTML 内容中获取 CSS 样式属性
How to get the CSS style attribute from HTML content using Jsoup
问:
我正在尝试使用 Jsoup 从 HTML div 标签中获取 Style 属性。看下面是我的div标签。
<div id="badge" class="er-badge" style="width: 576px; height: 369px; background: url("http://localhost:1020/er/ERImg/firmUploads/13854/LogoImg4.png") 0% 0% / cover no-repeat; z-index: 1; position: relative;" tabindex="0" data-preview-purposes="checked">
从这个 div 标签样式中,我只想提取属性。我可以使用下面的代码获取整个样式属性background:
String style = Element.attr("style");
但是,我只想从中获取背景属性值。是否可以使用 Jsoup 或 Please tell 任何其他简单的方法来提取属性。 提前致谢。
答:
0赞
samabcde
4/13/2023
#1
很高兴看到这个问题,而不是有人试图使用正则表达式手动解析。
就像我们不应该自己解析html一样,手动解析CSS也是不可取的。
已经有可用的库 - cssparser htmlunit-cssparser 来完成这项工作。 我们可以得到如下的CSS值:background
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("http://localhost:1020/er/ERImg/firmUploads/13854/LogoImg4.png") 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"));
}
}
评论
0赞
Kavi Chinna
4/14/2023
samabcde - 感谢您的建议,我尝试实现代码,但我看不到新的 SACParserCSS3(),我只能导入新的 SACParser()。我无法在我的应用程序中使用 SACParserCSS3。我正在使用 maven。
0赞
samabcde
4/14/2023
您使用的是 0.9.30 版本吗?mvnrepository.com/artifact/net.sourceforge.cssparser/cssparser/......
0赞
Kavi Chinna
4/14/2023
版本 0.9.23...当我提取该 jar 时,我可以在该 Jar 文件中看到 SACParserCSS3.class。那为什么我不能用它呢?
0赞
samabcde
4/17/2023
我看不出使用这两个版本有任何问题,我找到了一个更积极维护的 css 解析库并更新了我的答案,看看它是否适合您。
0赞
RBRi
4/19/2023
编辑后的代码使用 mvnrepository.com/artifact/org.htmlunit/htmlunit-cssparser
评论