5

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>
4

2 に答える 2

5

スタイルが要素に埋め込まれている場合は、を使用する必要があります.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;
于 2012-10-31T13:09:46.167 に答える
5

これを試して:

Document document = Jsoup.parse(html);
String style = document.select("style").first().data();

次に、CSS パーサーを使用して、関心のある詳細を取得できます。

于 2012-10-31T13:26:06.753 に答える