JSoup는 Java로 작성된 HTML 파싱 라이브러리로, HTML 문서를 쉽게 다룰 수 있게 도와주는 도구입니다. 웹 페이지에서 원하는 데이터를 가져오는 웹 스크래핑 작업에 널리 사용됩니다. 웹 페이지의 HTML 구조를 이해하고 데이터를 추출하기 위해, HTML을 파싱하고 다루는 데 필수적인 기능을 제공합니다. JSoup는 특히 리눅스 환경에서도 잘 동작하여, 다양한 OS에서 사용할 수 있는 장점이 있습니다.
웹 스크래핑이란?
웹 스크래핑(Web Scraping)은 웹 사이트의 데이터를 자동으로 수집하는 방법입니다. 이는 사람의 개입 없이 웹 페이지에 있는 데이터를 가져와 저장하고 활용하는 작업을 말합니다. JSoup를 사용하면, HTML 문서를 쉽게 파싱하고 필요한 정보를 추출할 수 있어, 웹 페이지의 구조를 이해하고 데이터를 수집하는 데 적합합니다.
JSoup의 주요 기능과 장점
1. HTML 파싱 및 DOM 조작
JSoup는 HTML 파싱을 통해 HTML을 DOM 형식으로 다루는 기능을 제공합니다. 이를 통해 특정 HTML 요소를 찾아내고 데이터를 추출하거나 HTML 구조를 변경할 수 있습니다.위 코드는 DOM 구조를 분석하여 HTML의 모든 <a> 태그를 선택하고, 각 링크의 href 속성과 텍스트를 출력하는 예제입니다.
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JSoupExample {
public static void main(String[] args) {
try {
Document doc = Jsoup.connect("http://example.com").get();
Elements links = doc.select("a");
for (Element link : links) {
System.out.println("링크: " + link.attr("href"));
System.out.println("텍스트: " + link.text());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
JSoup는 CSS 셀렉터를 사용하여 원하는 HTML 요소를 선택할 수 있습니다. 복잡한 HTML 구조에서도 특정 요소를 쉽게 찾을 수 있어 편리합니다.
Elements elements = doc.select(".example-class #example-id");
for (Element element : elements) {
System.out.println(element.text());
}
이 코드는 CSS 셀렉터를 활용해 클래스가 example-class이고 ID가 example-id인 요소의 텍스트를 추출합니다.
3. 데이터 정리 및 추출
JSoup를 이용해 HTML 구조를 수정하거나 불필요한 데이터를 필터링하여 원하는 데이터만 정리할 수 있습니다.
Document doc = Jsoup.connect("http://example.com").get();
String title = doc.title();
System.out.println("웹 페이지 제목: " + title);
위 예제에서는 웹 페이지의 제목을 가져오는 방법을 보여줍니다. 이와 같은 기능은 웹 데이터를 효율적으로 수집할 때 유용합니다.
4. HTML 수정
웹 페이지의 데이터를 가져온 후, 필요한 데이터만 가공하여 출력하거나 HTML 태그를 제거하여 텍스트만 추출하는 기능을 제공합니다.이 코드는 HTML 문서의 <p> 태그 텍스트를 수정하는 예시입니다.
String html = "<html><head><title>JSoup 연습</title></head>"
+ "<body><p>Hello, World!</p></body></html>";
Document doc = Jsoup.parse(html);
doc.select("p").first().text("Hello, JSoup!");
System.out.println(doc);
5. 리눅스 환경 지원
JSoup는 리눅스에서도 Java 환경만 구축되어 있다면 쉽게 실행할 수 있으며, 웹 크롤링 및 스크래핑 작업을 자동화하는 데 매우 유용합니다. 웹 애플리케이션 또는 데이터 분석 프로젝트에서도 이를 활용할 수 있습니다.
Elements elements = doc.select(".example-class #example-id");
for (Element element : elements) {
System.out.println(element.text());
}
참고사이트
'JAVA' 카테고리의 다른 글
[JAVA] JSoup HTML 데이터 추출 (0) | 2024.10.28 |
---|---|
[JAVA] JSoup CSS 선택자 (0) | 2024.10.28 |
[JAVA] JSoup 기본 사용법 (0) | 2024.10.28 |
[JAVA] JSoup 라이브러리 추가 (Gradle, Maven) (1) | 2024.10.28 |
[JAVA] byte[] 배열을 string[] 배열로 변환 (0) | 2018.11.14 |
간단한 multipart 파일 업로드 (0) | 2018.09.05 |
jpa 시간 자동 저장 [@CreationTimestamp][@UpdateTimestamp] (0) | 2018.08.24 |
jpa orderby (0) | 2018.08.10 |