본문 바로가기
Language/Java

[Java] Jsoup을 이용한 html 파싱

by J4J 2021. 3. 9.
300x250
반응형

안녕하세요. J4J입니다.

 

이번 포스팅은 Jsoup을 이용한 html 파싱에 대해 적어보는 시간을 가져보려고 합니다.

 

 

파싱이란?

 

파싱은 한글로 뜻풀이를 해보면 구문 분석이라는 뜻으로 문장을 이루고 있는 구성 성분을 분해하여 구조화하는 것을 의미합니다.

 

이게 무슨 말이냐?

 

간단하게 말하면 화면을 만들기 위해 사용되는 html태그 및 정보들을 가져와 새로운 구조를 만든다고 생각하면 됩니다.

 

그리고 자바에서 html 파싱을 할 수 있도록 도와주는 라이브러리가 Jsoup입니다.

 

html을 파싱하는 이유에는 사람들마다 다른 이유들이 존재하겠지만 저 같은 경우는 보통 웹 페이지에 있는 데이터를 가져와 여러 가지 테스트를 하고 싶을 때 사용합니다.

 

하지만 웹 페이지에 있는 데이터를 가져올 때 조심해야 될 점은 가져와도 되는 데이터인지 아닌지를 확인해봐야 됩니다.

 

데이터 사용 여부에 대해서는 보통 robots.txt파일을 확인하는데 웹 페이지마다 robots.txt를 확인하는 방법은 도메인 명 뒤에 /robots.txt를 입력하면 됩니다.

 

제 블로그 같은 경우는 다음과 같이 나옵니다.

 

robots.txt

 

 

그리고 html파싱과 유사한 용어로는 스크래핑, 크롤링 등이 있는데 관심 있으신 분들은 해당 내용들에 대해 검색해보셔서 정보를 얻으시면 좋을 것 같습니다.

 

 

반응형

 

 

사용 방법

 

본격적으로 Jsoup을 사용해보도록 하겠습니다.

 

html을 파싱하기 위한 테스트 내용을 다음과 같이 만들어 보겠습니다.

 

html 파싱을 위한 타이틀

html 파싱을 해봅시다!

 

 

 

해당 내용은 다음과 같은 코드로 구성되어 있습니다.

 

<div class="parsingDiv" style="background-color: #f15f5f; text-align: center; color: #333333;">
  <div id="parsingTitle">
  	<h3>html 파싱을 위한 타이틀</h3>
  </div>
  <div id="partsingContents">
  	<p>html 파싱을 해봅시다!</p>
  </div>
</div>

 

 

이제 Jsoup를 사용하여 자바에서 위의 html을 파싱 하여 제목과 내용을 콘솔 창에 출력해보도록 하겠습니다.

 

[ 1. Jsoup jar파일 다운로드 ]

 

jsoup-1.12.1.jar
0.38MB

 

 

[ 2. 자바 프로젝트/lib 경로에 jar파일 옮기기 ]

 

jar파일 위치

 

 

[ 3. 프로젝트 우클릭 → Build Path → Configure Build Path... 클릭 ]

 

build path 설정 경로

 

[ 4. Libraries탭 → Add JARs... → jar파일 경로에서 jar파일 선택 후 OK ]

 

jsoup jar add

 

 

 

[ 5. 클래스 파일에 코드 입력 ]

 

package parsing;

import java.io.IOException;

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupParsing {
	public static void main(String[] args) {
		try {
			String URL = "https://jforj.tistory.com/68";
			Connection conn = Jsoup.connect(URL);
			
			Document document = conn.get();
			
			Elements parsingDivs = document.getElementsByClass("parsingDiv"); // class가 parsingDiv인 element 찾기
			Element parsingDiv = parsingDivs.get(0);
			
			Element parsingTitle = parsingDiv.getElementById("parsingTitle"); // id가 parsingTitle인 element 찾기
			Element partsingContents = parsingDiv.getElementById("partsingContents"); // id가 parsingContents인 element 찾기
			
			String title = parsingTitle.getElementsByTag("h3").get(0).text(); // 첫 번째 h3태그의 text값 찾기
			String contents = partsingContents.getElementsByTag("p").get(0).text(); // 첫 번째 p태그의 text값 찾기
			
			System.out.println("파싱한 제목: " + title);
			System.out.println("파싱한 내용: " + contents);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}
}

 

 

 

 

실행 결과

 

위의 자바 코드를 실행할 경우 콘솔 창에 다음과 같이 출력됩니다.

 

파싱한 제목: html 파싱을 위한 타이틀
파싱한 내용: html 파싱을 해봅시다!

 

 

이처럼 텍스트를 가져와 활용할 수도 있고 이미지 태그에 들어있는 경로를 가져와 실행 한 번으로 여러 이미지 파일들을 업로드할 수도 있습니다.

 ※ URL을 이용한 이미지 업로드에 대해 모르신다면? 2021.03.08 - [IT/Java] - [Java] URL을 이용한 이미지 업로드

 

그리고 위에서 언급한 파싱, 스크래핑, 크롤링 등은 데이터들을 상업적인 목적으로 사용하거나 경쟁 업체꺼를 가져와 사용할 경우 법적 책임을 물을 수 있으니 잘 확인해보시고 사용하시길 바랍니다.

 

 

 

 

 

이상으로 Jsoup을 이용한 html 파싱에 대해 간단하게 알아보는 시간이었습니다.

 

읽어주셔서 감사합니다.

728x90
반응형

댓글