[java] Jsoup을 사용하여 웹페이지 응답 데이터 정규화하기

웹 스크래핑이나 크롤링 작업을 할 때, 주어진 웹페이지의 HTML 구조에서 원하는 데이터를 추출하는 것은 중요한 작업입니다. Jsoup은 자바로 작성된 HTML 파서 라이브러리로, 웹페이지를 손쉽게 다룰 수 있도록 도와줍니다.

이 튜토리얼에서는 Jsoup을 사용하여 웹페이지 응답 데이터를 정규화하는 방법에 대해 알아보겠습니다.

1. Jsoup 라이브러리 추가하기

먼저, 프로젝트의 의존성 관리 도구 (예: Maven 또는 Gradle)를 사용하여 Jsoup 라이브러리를 프로젝트에 추가해야 합니다.

Maven을 사용하는 경우, pom.xml 파일에 다음 종속성을 추가합니다:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.13.1</version>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음 종속성을 추가합니다:

implementation 'org.jsoup:jsoup:1.13.1'

의존성을 추가한 후에는, 프로젝트가 Jsoup을 사용할 수 있게 됩니다.

2. 웹페이지 데이터 가져오기

Jsoup을 사용하여 웹페이지의 데이터를 가져오려면, Jsoup.connect() 메서드를 사용하여 해당 URL에 연결해야 합니다. 연결한 후에는 .get() 메서드를 호출하여 해당 페이지의 HTML을 가져올 수 있습니다.

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class WebPageScraper {
    public static void main(String[] args) throws Exception {
        String url = "https://example.com";
        Document doc = Jsoup.connect(url).get();
        System.out.println(doc);
    }
}

위의 예제에서는 “https://example.com”의 웹페이지 HTML 데이터를 가져오고 출력합니다.

3. 웹페이지 데이터 정규화하기

Jsoup을 사용하여 웹페이지 데이터를 가져왔다면, 이제 필요한 데이터를 추출하고 정규화해야 합니다. Jsoup은 HTML 요소를 조작하기 위한 다양한 메서드와 선택자를 제공합니다.

웹페이지 제목 가져오기

String title = doc.title();
System.out.println("제목: " + title);

HTML 요소 선택하기

// 태그 이름으로 선택하기
Elements paragraphs = doc.select("p");
for (Element paragraph : paragraphs) {
    System.out.println(paragraph.text());
}

// 클래스 이름으로 선택하기
Elements elements = doc.select(".class-name");
for (Element element : elements) {
    System.out.println(element.text());
}

// 아이디로 선택하기
Element element = doc.select("#id-name").first();
System.out.println(element.text());

데이터 추출하기

Element element = doc.select("css-selector").first();
String data = element.text();
System.out.println(data);

위의 예제 코드에서 css-selector는 원하는 데이터를 가리키는 CSS 선택자입니다. 필요한 경우 Jsoup 문서에서 더 많은 선택기에 대한 정보를 찾을 수 있습니다.

결론

이 튜토리얼에서는 Jsoup을 사용하여 웹페이지 응답 데이터를 정규화하는 방법을 살펴보았습니다. Jsoup은 간단하고 강력한 기능을 제공하여 웹 스크래핑 작업을 더욱 쉽게 만들어줍니다. 필요한 데이터를 정확하고 효율적으로 추출할 수 있도록 Jsoup의 다양한 기능을 사용해보세요.

참고 자료