java - 在 JAVA 中使用 JSOUP 从 HTML 中提取 CSS 样式

标签 java jsoup

任何人都可以帮助使用 Java 中的 Jsoup 从 HTML 中提取 CSS 样式。 例如,在下面的 html 中,我想提取 .ft00 和 .ft01

<HTML>
<HEAD>
<TITLE>Page 1</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<DIV style="position:relative;width:931;height:1243;">
<STYLE type="text/css">
<!--
    .ft00{font-size:11px;font-family:Times;color:#ffffff;}
    .ft01{font-size:11px;font-family:Times;color:#ffffff;}
-->
</STYLE>
</HEAD>
</HTML>

最佳答案

如果样式嵌入到您的元素中,您只需使用 .attr("style") .

JSoup 不是 Html 渲染器,它只是一个 HTML 解析器,因此您必须解析检索到的 <style> 中的内容。标记 html 内容。您可以为此使用一个简单的正则表达式;但它不会在所有情况下都有效。您可能希望使用 CSS 解析器来完成此任务。

public class Test {
    public static void main(String[] args) throws Exception {
        String html = "<HTML>\n" +
                "<HEAD>\n"+
                "<TITLE>Page 1</TITLE>\n"+
                "<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n"+
                "<DIV style=\"position:relative;width:931;height:1243;\">\n"+
                "<STYLE type=\"text/css\">\n"+
                "<!--\n"+
                "    .ft00{font-size:11px;font-family:Times;color:#ffffff;}\n"+
                "    .ft01{font-size:11px;font-family:Times;color:#ffffff;}\n"+
                "-->\n"+
                "</STYLE>\n"+
                "</HEAD>\n"+
                "</HTML>";

        Document doc = Jsoup.parse(html);
        Element style = doc.select("style").first();
        Matcher cssMatcher = Pattern.compile("[.](\\w+)\\s*[{]([^}]+)[}]").matcher(style.html());
        while (cssMatcher.find()) {
            System.out.println("Style `" + cssMatcher.group(1) + "`: " + cssMatcher.group(2));
        }
    }
}

将输出:

Style `ft00`: font-size:11px;font-family:Times;color:#ffffff;
Style `ft01`: font-size:11px;font-family:Times;color:#ffffff;

关于java - 在 JAVA 中使用 JSOUP 从 HTML 中提取 CSS 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13158705/

相关文章:

java - 尝试在页面上定位文本元素

java - Android:将选择的不同布局动态加载到另一个布局中

java - 如何使用 Java 从网站复制 html div 的内容

java - Jsoup 礼貌策略 + DNS 解析器

html - 为什么 "div[class=mncls sbucls]"工作而 "div.mncls sbucls"不工作?

java - JSOUP 计数 Map 标签中的总元素数

java - 为其他开发人员设计类以在 Java 中使用

java - 通过引用操作 jtree 节点似乎不起作用(swing)

android - 从 cookiesyncmanager 进行 Jsoup cookie 身份验证以从 https 站点抓取

java - 使用 jsoup 获取表的内容