[java] Jsoup을 사용하여 웹페이지 내 테이블 데이터 추출하기

웹 크롤링은 웹페이지에서 원하는 데이터를 추출하는 방법 중 하나입니다. Jsoup은 Java로 작성된 HTML 파싱 라이브러리로써, 간단하게 웹페이지의 HTML 구조를 탐색하고 원하는 데이터를 추출할 수 있습니다. 이번 포스트에서는 Jsoup을 사용하여 웹페이지 내 테이블 데이터를 추출하는 방법을 알아보겠습니다.

1. Jsoup 라이브러리 추가

먼저 프로젝트에 Jsoup 라이브러리를 추가해야 합니다. Maven 프로젝트의 경우 pom.xml 파일에 다음과 같은 의존성을 추가합니다.

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

Gradle 프로젝트의 경우 build.gradle 파일에 다음과 같은 의존성을 추가합니다.

compile group: 'org.jsoup', name: 'jsoup', version: '1.13.1'

의존성을 추가한 후에는 라이브러리를 다운로드하여 프로젝트에서 사용할 수 있게 됩니다.

2. Jsoup을 사용하여 테이블 데이터 추출하기

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

public class WebTableCrawler {
    public static void main(String[] args) {
        try {
            // 웹페이지 URL 설정
            String url = "http://example.com";

            // Jsoup을 사용하여 웹페이지 HTML 가져오기
            Document doc = Jsoup.connect(url).get();

            // 테이블 태그 선택
            Elements tables = doc.select("table");

            // 첫 번째 테이블 선택
            Element table = tables.get(0);

            // 테이블 내 모든 행 선택
            Elements rows = table.select("tr");

            // 행 순회
            for (Element row : rows) {
                // 행 내 모든 셀 선택
                Elements cells = row.select("td");

                // 셀 순회
                for (Element cell : cells) {
                    // 셀 내용 출력
                    System.out.print(cell.text() + "\t");
                }

                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 예제 코드에서는 Jsoup을 사용하여 특정 웹페이지의 HTML을 가져온 후, 첫 번째 테이블을 선택하고 테이블 내의 모든 행과 셀을 추출하여 출력합니다.

3. 실행 결과

실행하면 해당 웹페이지의 첫 번째 테이블에 있는 모든 데이터가 탭으로 구분되어 출력됩니다. 이렇게 되면 테이블 데이터를 쉽게 추출하여 다양한 용도로 활용할 수 있습니다.

마무리

이번 포스트에서는 Jsoup을 사용하여 웹페이지 내 테이블 데이터를 추출하는 방법을 알아보았습니다. Jsoup은 간편하고 강력한 기능을 제공하여 웹 크롤링을 쉽게 할 수 있는 도구입니다. 데이터 추출이 필요한 경우에는 Jsoup을 활용해 보세요.

Jsoup 공식 사이트