본문 바로가기
공부방/Java

Jsoup이란?

by SmartCow 2020. 9. 1.

jsoup 

자바(Java)로 만들어진 HTML 파서(Parser)

 

jsoup은 자바 언어로써 HTML을 다루기 쉽고, 강력한 기능을 제공

 

 

jsoup로 할 수 있는 작업 종류

1. URL, 파일, 문자열을 소스로 하여 HTML을 파싱

2. DOM 구조를 추적하거나 익숙한 CSS 선택자를 사용하여 데이터를 찾아 추출

3. 문서내의 HTML 요소, 속성, 텍스트를 조작

4. 사용자가 입력한 데이터로부터 XSS(Cross-Site Script) 공격을 방지하기 위해서 안전한 화이트 리스트 방식으로 지정된 태그만 남기고 나머지는 제거

5. 깔끔한 형태의 HTML을 출력

 

 

jsoup는 오픈 소스 프로젝트로 제공된다.

라이센스는 MIT

다음 사이트에서 다운로드 및 필요한 정보를 얻을 수 있습니다.

 

jsoup Java HTML Parser, with the best of HTML5 DOM methods and CSS selectors.

jsoup: Java HTML Parser jsoup is a Java library for working with real-world HTML. It provides a very convenient API for fetching URLs and extracting and manipulating data, using the best of HTML5 DOM methods and CSS selectors. jsoup implements the WHATWG H

jsoup.org

 

1. 문서의 파싱

문서는 URL, 파일, 문자열로 부터 파싱할 수 있다.

 

1.1. 문서전체를 가지고 있는 문자열로부터 파싱

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;
...

String html = "<title>First parse</title>" + "<p>Parsed HTML into a doc.</p>";
Document doc = Jsoup.parse(html);

문서로부터 html  tag를 모두 제거 하고 순수 문자열만 얻고자 할 때는 String text = doc.text(); 를 사용.

 

 

1.2. 문서의 body 일부분을 가지고 있는 문자열로부터 파싱

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

...

String html = "<div><p>Lorem ipsum.</p>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();

doc.body() 메소드는 문서의 body 요소를 추출한다. 

doc.getElementByTag("body") 와 동일

 

사용자가 웹페이지의 폼으로 부터 입력한 html 태그를 포함한 입력 내용에서 "cross-site scripting"공격을 피하기 위해서 화이트 리스트 기반의 tag 제거 기능을 사용할 수 있다.

 

Jsop.clean(String bodyHtml, Whitelist whitelist);

허용하는 tag를 지정하는 Whitelist 클래스에 대해서는 API 문서를 참조

 

 

1.3.  URL로부터 문서를 파싱하는 방법

GET 방식의 호출

Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();

POST 방식의 호출

Document doc = Jsoup.connect("http://example.com")
 .data("query", "Java")
 .userAgent("Mozilla")
 .cookie("auth", "token")
 .timeout(3000)
 .post();

jsoup는 http와 https만을 지원한다.

 

 

1.4. 파일로부터 파싱하는 방법

File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "
http://example.com/");

parse메소드의

첫 번째 인자는 파싱할 파일의 File 객체

두 번째 인자는 파일의 캐릭터셋

세 번째 인자는 파일내의 a, img 태그 등의 base url

base url 이 없는 오버로드 된 메소드 -> Jsoup.parse(input, "UTF-8");

 

 

자료출처 및 더 세부적인 내용

 

jsoup : 자바 HTML 파서(Java HTML Parser)

CKEditor, Smart Editor 같은 HTML 에디터로 글을 작성하는 사이트의 경우 작성된 글에서 html 태그(tag)를 제거한 순수한 텍스트만을 추출하거나, img 태그만을 추출하여 썸네일(Thumbnail)을 만거나 하는 일�

offbyone.tistory.com

 

'공부방 > Java' 카테고리의 다른 글

SpringSecurity Authentication관련 클래스와 처리  (0) 2021.01.01
Request 객체  (0) 2020.12.20
web.xml 수동으로 추가하는 방법  (0) 2020.11.30
jar파일을 추가해보자  (0) 2020.08.31
ATOM 및 ATOM 플러그인 설치하다.  (0) 2020.08.14