jsoup을 활용해서 Java에서 HTML 파싱하는 방법 정리

 

모바일 개발이나 각종 사이트를 처리할 때 HTML 페이지를 가져와서 분석하는 경우가 종종 있습니다. 

보통 HTML 파싱할 때 정규식을 이용해서 했었는데요. 

 

단점이 <div>태그와 같은 것이 중첩되어 있을 경우, 첫번째 </div>태그까지만 찾게 되는 것이었습니다. 

아무래도 정규식 자체가 문자열 매칭이기 때문에 한계가 있는 것 같구요. 

결국 DOM과 같은 구조를 사용하지 않으면 안될 것 같다는 생각이 들었습니다. 

예전에 Javascript에서 쓸 수 있는 HTML Parser도 한번 소개한 적이 있기는 한데요. 

오늘은 Java에서 활용할 수 있는 HTML Parser인 jsoup에 대해서 이야기 해보려고 합니다. 

 

jsoup: Java HTML Parser

jsoup은 실제 사용하는 HTML을 처리할 수 있는 자바 라이브러리인데요. 

HTML 문서를 URL이나 파일, 문자열 형태로 전달해서 파싱할 수 있구요. 

DOM, CSS, JQuery와 유사한 메소드들을 사용할 수 있어서 상당히 편리합니다. 

즉, DOM 탐색 구조 뿐만 아니라 문서 내부의 특정 위치를 찾을 때 CSS의 class를 기반으로도 검색이 가능한 구조이죠. 

(실제 HTML 파싱할 때 정말 좋습니다.. ^^)

 

간단한 예제

jsoup에서 소개하고 있는 예제는 위키피디아에 접속해서 "In the news" 항목 중 Headline 부분만 가져오는 것입니다. 

먼저 예제를 보시죠.. 

위 예제는 class가 #mp-itn인 태그 하위 목록 중에 <b> 태그 다음에 <a> 태그가 있는 Element의 리스트를 가져오라는 명령입니다. 

위키피디아에 접속해서 보면 다음 부분 중에 굵은 글씨로 되어 있는 부분들만 가져오게 되는 것이죠. 

위키피디아 뉴스

즉, "World Chess Championship", "Madeline Miller" 등의 텍스트를 포함한 Element를 가져오게 되겠죠.. 

정말 편리한 구조로 되어 있구요. 이걸 써본 다음부터는 복잡한 정규식을 버리게 되었네요.. ^^

 

설치 방법

MIT 라이센스를 따르는 오픈 소스로 되어 있구요. 설치 방법은 다음과 같습니다. 

먼저 jsoup.jar 파일을 다운로드 합니다. 

소스까지 필요 없다면 jsoup-1.6.3.jar 파일을 받으시면 됩니다. 

당연히 jsoup-1.6.3-javadoc.jar 파일도 받으셔서 java doc을 보시면서 프로그래밍 해야 보다 제대로 활용할 수 있을 겁니다. 

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

그리고 다운로드한 jsoup-1.6.3.jar 파일을 lib/ 폴더에 넣으시고 개발을 하시면 됩니다. 

위에서 이야기 한 대로 DOM 트리구조 탐색이나 CSS의 Selector등을 그대로 활용할 수 있으니 새롭게 배울 것은 없다고 보셔도 됩니다. ^^

 

활용 예제

제 블로그에 한번 간단하게 테스트 해보죠.. 

class="title"로 되어있는 부분을 찾아서 리스트로 가져오구요. 

그리고 href로 링크가 걸려있는 부분을 찾아서 리스트로 가져오는 예제입니다. 

실행 결과는 다음과 같습니다. 

jsoup 테스트 화면

정말 편리한 라이브러리 인 것 같네요. 

여러분도 복잡한 정규식 버리고 jsoup을 잘 활용해 보세요 ^^

 

HTML 파싱 및 정규식 활용 더 알아보기

Javascript를 활용한 HTML 파싱

순수 자바스크립트로 구성된 HTML 파서도 참고해 보세요. js 파일도 받을 수 있습니다.

 

정규식을 활용해 HTML태그를 제거하는 소스

HTML 태그를 제거하기 위한 정규식이 필요하면 한번 살펴보세요.

 

프록시를 활용해 HTML 소스 가져오기

파싱 전 HTML을 가져오는 방법 중 프록시를 활용해야 할 수도 있습니다.

 

정규식으로 전화번호 출력 형식 지정하는 소스

전화번호와 같은 숫자를 특정 형식에 맞춰서 출력하고 싶을 때 정규식을 활용해 보세요.

 

날짜 형식을 변경하기 위한 Java의 SimpleDateFormat 소스

날짜 포맷을 자유자재로 바꿔 쓰고 싶을 때 참고해 보세요.

 

아이폰 개발에서 문자열 파싱을 위한 정규식 활용

Objective C에서 정규식을 적용할 수 있는 RegexKitLite가 필요할 때 보세요

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
204 스프링(Spring) 프레임워크 기본 개념 강좌 (6) - Dynamic Proxy 졸리운_곰 2017.10.02 71
203 스프링(Spring) 프레임워크 기본 개념 강좌 (5) - AOP Proxy file 졸리운_곰 2017.10.02 158
202 스프링(Spring) 프레임워크 기본 개념 강좌 (4) - AOP file 졸리운_곰 2017.10.02 109
201 스프링(Spring) 프레임워크 기본 개념 강좌 (3) - IoC file 졸리운_곰 2017.10.02 114
200 스프링(Spring) 프레임워크 기본 개념 강좌 (2) - 주요 구성 요소 & DI file 졸리운_곰 2017.10.02 107
199 스프링(Spring) 프레임워크 기본 개념 강좌 (1) - 스프링 이해하기 file 졸리운_곰 2017.10.02 290
198 Spring - IoC & DI file 졸리운_곰 2017.10.02 64
197 WebDAV 구현을 위한 환경 설정 file 졸리운_곰 2017.09.24 74
196 [subclipse] svn에서 무시할 파일 설정하기 svn:ignore property 설정 file 졸리운_곰 2017.09.24 145
195 다섯개의 탑 자바로 머신러닝 라이브러리 Top 5 machine learning libraries for Java file 졸리운_곰 2017.08.22 161
194 이진 파일, 이진 모드로 열어서 읽기 예제 소스 졸리운_곰 2017.05.20 135
193 Converting C# code in JAVA / datatype problem 졸리운_곰 2017.05.20 219
192 DwgFile.java - Joinup 졸리운_곰 2017.04.27 729
191 자바에서 C# 호출하기 file 졸리운_곰 2017.04.26 236
190 java4autocad Java for Autocad file 졸리운_곰 2017.04.26 257
189 Comparison between C# and Java - DiVA.pdf file 졸리운_곰 2017.04.25 682
188 [Java] Apache Commons HttpClient로 SSL 통신하기 졸리운_곰 2017.03.27 545
187 jsoup 사용하기 졸리운_곰 2017.03.27 116
186 Java Annotation: 인터페이스 강요로부터 자유를… file 졸리운_곰 2017.03.20 77
185 JSoup를 이용한 HTML 파싱 졸리운_곰 2017.03.04 100
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED