Java : JSOUP 를 이용, html에서 소스, 링크경로 추출후 절대 경로로 바꾸기
Java 2012. 6. 12. 14:28
Java 라이브러리 중에 JSOUP 라고 심플하면서도 왠지 간지나는 HTML 문서를 다루는 라이브러리가 있다.
요 라이브러리를 이용해 HTML 문서에서 각종 경로를 추출해서 요 경로를 절대 경로로 바꿔보자.
먼저 테스트할 html 문서
<html> <head> <title>테스트다!!</title> <script type="text/javascript" src="/resource/js/jquery-1.7.1.min.js"></script> <link type="text/css" href="/resource/css/admin/general.css" rel="stylesheet" /> </head> <body> <span id="navi"> <img src="http://www.naver.com/resource/image/stitle_standarda.gif" alt="" /> </span> 테스트다!! </body> </html>
테스트 소스
import java.io.IOException; import java.net.URL; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Test { public static void main(final String[] args) throws IOException{ Document doc = Jsoup.parse( new URL("http://127.0.0.1:8080/index.html").openConnection().getInputStream(), "UTF-8", "http://127.0.0.1:8080/"); // src attribute 가 있는 엘리먼트들을 선택 Elements elems = doc.select("[src]"); for( Element elem : elems ){ if( !elem.attr("src").equals(elem.attr("abs:src")) ){ elem.attr("src", elem.attr("abs:src")); } } // href attribute 가 있는 엘리먼트들을 선택 elems = doc.select("[href]"); for( Element elem : elems ){ if( !elem.attr("href").equals(elem.attr("abs:href")) ){ elem.attr("href", elem.attr("abs:href")); } } System.out.println(doc.toString()); } }
변환된 html 문서
<html> <head> <title>테스트다!!</title> <script type="text/javascript" src="http://127.0.0.1:8080/resource/js/jquery-1.7.1.min.js"></script> <link type="text/css" href="http://127.0.0.1:8080/resource/css/admin/general.css" rel="stylesheet" /> </head> <body> <span id="navi"> <img src="http://www.naver.com/resource/image/stitle_standarda.gif" alt="" /></span> 테스트다!! </body> </html>
JSOUP 사이트 : http://jsoup.org/
Maven Dependency
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.6.3</version> </dependency>
뭐 이것 외에도 JSOUP 를 이용하면 HTML뿐만 아니라 XML 도 쉽게 다룰수 있다.
JQuery 에서 css 셀렉터를 써서 엘리먼트를 가져와서 쪼물닥 거리는 것과 비슷하게 xml 문서를 쉽게 파싱해서 땡겨다 쓸수 있다.
저번에 얼핏 말했던 xpath 를 이용해서 쪼물딱 거리는것 보다 개인적으로 훨씬 좋은것 같다.
JQuery 써본 사람들은 금방 쉽게 대충 파악해서 쓸 수 있다. 고건 시간되면 다음 기회에~
'Java' 카테고리의 다른 글
Apache Commons HttpClient 3.x 로 Http 서버에 파일 전송하기 (0) | 2014.05.29 |
---|---|
Apache HttpComponents 파일전송 예제 (5) | 2014.03.05 |
Java 정규표현식으로 문자열 중에서 ip 문자열을 배열로 추출하기 (0) | 2012.05.31 |
Java Servlet과 jQuery를 이용한 환율정보(from 네이버) 가져오기 (6) | 2012.05.24 |
Java 에서 문자열 비교할때 equals() 말고 == (비교연산자) 로 비교하기 (1) | 2011.11.24 |