[java] Jsoup을 사용하여 웹페이지 응답 데이터 분할하기

웹 크롤링이나 데이터 수집 작업을 할 때, 웹페이지의 응답 데이터를 효율적으로 분할해야 할 때가 많습니다. 이때 Jsoup 라이브러리를 사용하면 간편하게 웹페이지의 HTML 문서를 다룰 수 있습니다. 이번 블로그 포스트에서는 Jsoup을 이용하여 웹페이지의 응답 데이터를 분할하는 방법에 대해 알아보겠습니다.

Jsoup 라이브러리 설치하기

먼저, Jsoup 라이브러리를 사용하기 위해서는 해당 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 다음과 같이 의존성을 추가할 수 있습니다.

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

Gradle을 사용한다면 build.gradle 파일에 다음과 같이 의존성을 추가할 수 있습니다.

implementation 'org.jsoup:jsoup:1.14.1'

의존성을 추가한 후에는 라이브러리를 import하여 사용할 준비가 완료됩니다.

웹페이지 데이터 가져오기

Jsoup을 사용하여 웹페이지의 응답 데이터를 가져오려면 Jsoup.connect() 메서드를 사용합니다. 이 메서드를 호출한 후에는 .get() 메서드를 이용하여 해당 URL의 HTML 문서를 가져올 수 있습니다. 아래는 간단한 예제 코드입니다.

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Main {

    public static void main(String[] args) {
        try {
            String url = "https://example.com";
            Document doc = Jsoup.connect(url).get();
            System.out.println(doc.outerHtml());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 코드에서 Jsoup.connect(url).get() 부분을 통해 웹페이지의 HTML 문서를 가져옵니다. 이후 doc.outerHtml()을 호출하여 가져온 HTML 문서를 출력하게 됩니다.

웹페이지 데이터 분할하기

이렇게 Jsoup을 사용하여 웹페이지의 응답 데이터를 가져왔다면, 이후에는 원하는 데이터를 효율적으로 분할할 수 있습니다. 예를 들어, 특정한 CSS Selector를 이용하여 웹페이지의 특정 요소를 선택할 수 있습니다. 아래는 예제 코드입니다.

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Main {

    public static void main(String[] args) {
        try {
            String url = "https://example.com";
            Document doc = Jsoup.connect(url).get();
            Elements links = doc.select("a[href]");

            for (Element link : links) {
                String href = link.attr("href");
                System.out.println(href);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 코드에서 doc.select("a[href]") 부분을 이용하여 웹페이지의 모든 링크 요소를 선택하고, 이후 link.attr("href")를 호출하여 링크의 href 속성값을 가져오게 됩니다. 이렇게 선택한 요소의 원하는 속성값을 가져와서 활용할 수 있습니다.

Jsoup을 사용하여 웹페이지의 응답 데이터를 가져오고 분할하는 방법에 대해 알아보았습니다. Jsoup은 간편하고 유연한 문법을 제공하여 웹 데이터를 다루기에 편리한 라이브러리입니다. 필요한 데이터를 손쉽게 추출하여 활용할 수 있다는 점에서 개발자들에게 많은 도움을 줄 수 있습니다.

참고 자료