2012-10-31 5 views
4

Java에서 Jsoup를 사용하여 HTML에서 CSS 스타일을 추출하는 데 도움을 줄 수있는 사람이 누구입니까? 스타일이 그냥 .attr("style")를 사용할 필요가 귀하의 요소에 포함되어있는 경우 예컨대 들어 는 아래의 HTML에서 내가 .ft00 및 .ft01자바에서 JSOUP을 사용하여 HTML에서 CSS 스타일을 추출하십시오.

<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

을 추출 할.

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; 
+0

많은 감사 알렉스, 훌륭한 솔루션 –

관련 문제