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 |


