2023-11-28
작성
자바에서 jsoup 라이브러리는 HTML 문서를 파싱 하여대부분의 사이트의 원하는 정보만 뽑아낼 수 있는 라이브러리이다. 파이썬의 BeautifulSoup와 비슷한 기능이다.
jsoup 라이브러리 추가(pom.xml)
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.3</version>
</dependency>
파싱할 대상 페이지 찾기
w3schools 사이트에서 상단 메뉴에 나열된 프로그래밍 언어 목록을 파싱 하여 가져오려고 한다.
F12로 개발자도구를 열어 메뉴를 선택해서 가져올 selector 키워드를 찾는다.
<div id="subtopnav"> 태그로 감싸져 있는 <a class="ga-nav"> 목록을 가져올 것이다. 참고로 홈페이지가 리뉴얼되어 모양이 바뀌면 selector 역시 바뀔 수 있다.
Parser 클래스
HTML을 파싱 하여 페이지 정보를 가져올 클래스를 작성하자. selector 변수는 CSS selector 문법과 유사한데 selector-syntax를 참고하여 가져오고 싶은 부분을 기술하면 된다.
- el#id : id로 가지고 오기
- el.class : class로 가지고 오기
- el[attr] : attribute로 가지고 오기
- parent > child : parent 바로 밑의 자식 노드를 가지고 오기
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Sample {
public static void main(String[] args) {
/**
* Document 클래스 : 연결해서 얻어온 HTML 전체 문서
* Element 클래스 : Documnet의 HTML 요소
* Elements 클래스 : Element가 모인 자료형
*/
String url = "https://www.w3schools.com"; // 추출 사이트
String selector = "div#subtopnav .ga-nav"; // 추출 대상
Document doc = null;
try {
doc = Jsoup.connect(url).get(); // 1. get방식의 URL에 연결해서 가져온 값을 doc에 담는다.
} catch (IOException e) {
System.out.println(e.getMessage());
}
Elements titles = doc.select(selector); // 2. doc에서 selector의 내용을 가져와 Elemntes 클래스에 담는다.
for (Element element : titles) { // 3. Elemntes 길이만큼 반복한다.
System.out.println(element.text()); // 4. 원하는 요소가 출력된다.
}
}
}
실행 결과
HTML
CSS
JAVASCRIPT
SQL
PYTHON
JAVA
PHP
HOW TO
W3.CSS
C
C++
C#
BOOTSTRAP
...생략
'Backend > Java Example' 카테고리의 다른 글
자바에서 줄바꿈 \n 개행문자 치환하는 예제 (0) | 2023.12.06 |
---|---|
Java에서 Generator 규칙에 따라 거래코드 만들기 (SecureRandom 난수 생성) (1) | 2023.11.24 |
Java에서 UUID를 이용해서 난수 생성하기 (feat. SecureRandom) (1) | 2023.11.23 |
Java에서 서버 호스트(host) 정보 가져오는 법 (1) | 2023.11.22 |