jsoup: 자바 HTML 파서
jQuery 같은 간편함으로 Java에서 HTML 스크랩, 정리 및 조작
jsoup이란?
jsoup은 실제 HTML 작업을 위해 설계된 가볍지만 강력한 Java 라이브러리입니다. URL, 파일 또는 문자열에서 HTML을 파싱하고 DOM 탐색, CSS 선택자 및 최신 HTML5 메서드를 사용하여 데이터를 추출하고 조작할 수 있는 직관적인 API를 제공합니다. 웹 스크레이핑, 데이터 추출 및 HTML 정제에 이상적이며 브라우저처럼 잘못된 마크업도 원활하게 처리합니다.
정규식 기반 접근 방식과 달리 jsoup은 jQuery에서 영감을 받은 메서드로 깔끔한 객체 모델을 제공하며, 양식 제출, 속성 수정 및 텍스트 추출과 같은 작업을 단순화합니다. 종속성이 없고 MIT 라이선스가 적용되어 있어 안정적인 HTML 처리가 필요한 Java 개발자들에게 인기가 많습니다.
jsoup의 주요 장점:
- 실제 HTML 처리: 브라우저처럼 지저분한 HTML 파싱
- jQuery 스타일 구문: 친숙한 CSS 선택자 (예:
doc.select("div.content")
) - 스크레이핑에 최적화: 리디렉션 추적, 쿠키 처리 및 양식 제출
- 크로스 플랫폼: 네이티브 종속성 없는 순수 Java
- 보안: 내장 XSS 방지 및 HTML 정제 기능
데이터 마이닝, 웹 자동화 및 콘텐츠 분석에 이상적입니다.
jsoup을 선택해야 하는 이유
- 간편함: CSS 선택자 지원 직관적인 API
- 신뢰성: 2009년부터 활발히 유지보수
- 성능: 스트리밍 및 대용량 문서에 최적화
- 유연성: 조각, 파일 또는 라이브 URL에서 작동
- 깔끔한 출력: HTML 예쁘게 출력 및 재포맷
설치 방법
Maven 또는 Gradle로 jsoup 추가:
Maven
org.jsoup
jsoup
1.17.2
Gradle
implementation 'org.jsoup:jsoup:1.17.2'
시스템 요구 사항: Java 8+
코드 예제
jsoup의 실용적인 사용 사례:
예제 1: 문자열에서 문서 파싱
Java 문자열에 HTML이 있고 내용을 가져오거나 수정하려는 경우 jsoup을 사용하면 몇 줄의 코드로 구현할 수 있습니다.
parse(String html, String baseUri)
메서드는 입력 HTML을 새 Document로 변환합니다. baseUri
매개변수는 상대 URL을 절대 URL로 확인하는 데 도움이 되며 문서가 검색된 URL에 해당해야 합니다. 관련이 없거나 HTML에 <base>
요소가 포함된 경우 더 간단한 parse(String html)
메서드를 대신 사용할 수 있습니다.
예제 2: CSS 선택자로 요소 찾기
CSS 선택자를 사용하여 요소를 찾거나 조작하려면 HTML 문자열을 직접 파싱하여 조작합니다:
예제 3: 요소의 HTML 수정
요소의 HTML을 수정해야 하는 경우 다음 샘플 코드와 같이 Element의 HTML 설정자 메서드를 사용합니다.
고급 기능
jsoup은 전문적인 HTML 처리를 지원합니다:
- 양식 처리: POST 데이터 제출:
양식 제출
Connection.Response res = Jsoup.connect("https://example.com/login") .data("username", "user", "password", "pass") .method(Connection.Method.POST) .execute(); Document dashboard = res.parse();
- 프록시 지원: 프록시를 통한 스크레이핑:
프록시 설정
Document doc = Jsoup.connect("https://target.com") .proxy("127.0.0.1", 8080) .get();
- DOM 조작: HTML 구조 수정:
DOM 변경
doc.select("div.ads").remove(); // 모든 광고 제거 doc.select("h1").attr("class", "header"); // CSS 클래스 추가
jsoup vs HTMLUnit
주요 차이점:
- 초점: jsoup은 정적 HTML 파싱, HTMLUnit은 브라우저 시뮬레이션(JavaScript 실행)
- 속도: jsoup은 순수 HTML 파싱에서 더 빠름
- API 스타일: jsoup은 CSS 선택자, HTMLUnit은 Selenium 모방
- 사용 사례: jsoup은 스크레이핑, HTMLUnit은 동적 페이지 테스트
- 종속성: jsoup은 없음, HTMLUnit은 추가 라이브러리 필요
결론
jsoup은 Java 개발자를 위한 궁극의 HTML 도구 키트입니다. 다음에 이상적입니다:
- 웹 스크레이핑: 모든 웹사이트에서 데이터 추출
- 데이터 정리: HTML 정제 및 표준화
- 콘텐츠 분석: RSS 피드 또는 웹 아카이브 파싱
- 테스트: 앱 내 HTML 구조 검증
MIT 라이선스와 직관적인 API로 Java 기반 HTML 처리의 최적 선택입니다.