[Java] Jsoup (1)

2022. 4. 2. 10:45JAVA

이번 포스트는 Springboot에서 Jsoup을 이용하여 웹페이지 서버와 통신하는 실습을 진행하겠습니다.

 

웹페이지를 크롤링하기 위해 라이브러리를 조사할 때 가장 많은 reference가 있었던 다음의 두 라이브러리를 소개합니다.

 


Jsoup? Selenium?

 

Jsoup

 - HTML 문서에 저장된 데이터를 구문 분석, 추출 및 조작하도록 설계된 오픈 소스 JAVA 라이브러리입니다.

 - 정적인 자료를 수집하는 경우에 주로 사용합니다.

 - 정적 데이터를 비교적 빠르게 수집할 수 있지만 브라우저가 아닌 HTTP Request를 사용하기 때문에 동적 데이터를 수집하기 위해서는 해당 서버의 인증키 요구 등 수집할 수 없는 경우가 많다.

 

Selenium

 - 웹드라이버를 통해서 웹 자동화를 지원해주는 JAVA 라이브러리입니다.

 - 빅데이터 관련, 동적인 자료를 수집할 때 주로 사용한다.

 - Jsoup에 비해 속도는 느리지만 브라우저 드라이버를 사용하여 동적 데이터도 수집 가능하다.

 - 현재 브라우저에 출력된 페이지의 소스를 파싱 할 수 있다.

 

[개인 의견]

 - Jsoup은 백그라운드에서 HTTP Request / Response로 통신하기 때문에 실제 브라우저에서 보여지는 화면의 스크랩은 불가능하지만 Response를 통해 원하는 데이터를 json형식으로 받을 수 있다는 장점이 있으며, 웹페이지의 로그인할 때 보안정책을 사용한다면 이는 Jsoup을 사용해야 한다고 이해했습니다.

 - Selenium은 현재 브라우저에 출력된 페이지의 소스를 파싱 할 수 있다는 특징이 있습니다. (macro를 구현한다던지..)

 

Jsoup 사용해보기

Jsoup을 실제로 사용하기 전에 주요 요소 먼저 확인하겠습니다.

클래스명 설명
Document Jsoup 얻어온 결과 HTML 전체 문서
Element Document의 HTML 요소
Elements Element가 모인 자료형
Connection Jsoup의 connect 혹은 설정 메소드들을 이용해 만들어지는 객체(연결을 하기 위한 정보를 담고 있다)
Response URL에 접속해 받은 결과(Document와 다르게 status 코드, status 메시지나 charset같은 헤더 메시지와 쿠키등을 가지고 있다)

 

1. Dependencies 추가

gradle의 경우

+ maven일 경우 다음으로 dependency 추가 가능

compile group: 'org.jsoup', name: 'jsoup', version: '1.14.1'

2. 원하는 페이지 크롤링하기

(본 포스팅에서는 간단하게 웹페이지 크롤링으로 만족하기로~.~)

아주 간단한 실습이기 때문에 주석으로 설명을 대체합니다.

 

google에는 크롤링하려는 웹페이지의 주소를 입력하시면 됩니다. ( ex. google의 경우 https://www.google.com)

 

html(), text(), body()에 대한 각각의 결과 화면입니다.

 

# html()의 결과 화면

 - 해당 웹페이지의 응답을 html로 출력한 모습입니다.

 

# text()의 결과 화면

 - 웹페이지에서 텍스트에 해당하는 부분만 출력한 모습입니다.

 

# body()의 결과 화면

 - html에서도 body의 내용만 출력한 모습입니다.

 

간단한 실습은 여기에서 종료하고 이후의 로그인이나 파일 업로드 등 활용은 다음 포스팅에서 진행하도록 하겠습니다.

 

감사합니다.

 

[출처] : https://partnerjun.tistory.com/42

 

Java HTML parser, Jsoup로 원하는 값 얻어내기 - 기본

Jsoup는 아주 강력하고 재미있는 라이브러리다. 단순한 HTML 문서 파싱을 넘어 웹 사이트에 대한 Request, Response를 모두 처리할 수 있다. 덕분에 일부 특별한 경우(플래시, 애플릿, ActiveX같은 비표준

partnerjun.tistory.com

[출처] : https://heekng.tistory.com/64

 

[Java] 크롤링 crawling, 셀레니움 Selenium

[Java] 크롤링 crawling, 셀레니움 Selenium 웹 크롤링의 정식 명칭은 Web Scraping이며, 웹 사이트에서 원하는 정보를 추출하는 것을 의미한다. 보통 웹 사이트는 HTML기반이기 때문에 정보를 추출할 페이

heekng.tistory.com