Экстракт стили CSS из HTML в Java с помощью JSOUP
Может кто-нибудь помочь с извлечением стилей CSS из HTML с помощью Jsoup в Java.
Например, ниже 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>
2 ответов:
Если стиль встроен в ваш элемент, вам просто нужно использовать
.attr("style").JSoup не является HTML-рендером, это просто HTML-парсер, поэтому вам придется анализировать содержимое из извлеченного содержимого html-тега
<style>. Для этого можно использовать простое регулярное выражение, но оно не будет работать во всех случаях. Вы можете использовать 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;
Попробуйте это:
Document document = Jsoup.parse(html); String style = document.select("style").first().data();Затем вы можете использовать CSS-анализатор для извлечения интересующих вас деталей.
Comments