2022. 4. 2. 10:45ㆍJAVA
이번 포스트는 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 추가
+ 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