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

웹 페이지에서 필요한 데이터를 가져오려면 웹 스크래핑 기술을 사용해야 합니다. 그 중에서도 Jsoup은 Java로 작성된 HTML 파서 라이브러리로 많이 사용됩니다. Jsoup을 사용하면 HTML 문서에서 원하는 데이터를 쉽게 필터링하고 추출할 수 있습니다.

Jsoup 라이브러리 추가하기

먼저, Maven이나 Gradle과 같은 의존성 관리 도구를 사용하여 프로젝트에 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'

의존성을 추가한 후, 프로젝트를 다시 빌드하여 Jsoup 라이브러리를 가져올 수 있습니다.

웹페이지 데이터 가져오기

Jsoup을 사용하여 웹페이지의 HTML 문서를 가져오기 위해서는 Jsoup.connect() 메서드를 사용합니다. 다음은 예시로 ‘https://example.com’ 웹페이지의 HTML 문서를 가져오는 코드입니다.

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

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

위의 코드에서 Jsoup.connect() 메서드의 인자로 웹페이지의 URL을 전달하고, get() 메서드를 호출하여 HTML 문서를 가져옵니다. 가져온 HTML 문서는 Document 객체로 반환됩니다. Document 객체에서는 다양한 메서드를 사용하여 HTML 문서를 탐색하고 데이터를 필터링할 수 있습니다.

데이터 필터링하기

Jsoup을 사용하여 필요한 데이터를 필터링하기 위해서는 CSS 선택자를 사용합니다. CSS 선택자를 사용하면 HTML 문서에서 특정 요소를 선택하고 추출할 수 있습니다. 다음은 예시로 ‘https://example.com’ 웹페이지에서 h1 태그의 내용을 추출하는 코드입니다.

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

public class WebScraper {
    public static void main(String[] args) {
        try {
            Document doc = Jsoup.connect("https://example.com").get();
            Elements h1Elements = doc.select("h1");
            
            for (Element element : h1Elements) {
                System.out.println(element.text());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서 doc.select("h1")은 CSS 선택자를 사용하여 HTML 문서에서 h1 태그를 선택합니다. 선택된 h1 요소는 Elements 객체로 반환되며, for 루프를 사용하여 각 요소의 내용을 출력합니다.

결론

Jsoup을 사용하면 Java로 웹 스크래핑하는 작업을 간편하게 수행할 수 있습니다. 이를 활용하여 웹페이지의 응답 데이터를 필터링하고 필요한 정보를 추출할 수 있습니다.