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

오늘은 Jsoup 라이브러리를 사용하여 Java로 웹페이지의 폼 데이터를 추출하는 방법을 알아보겠습니다. Jsoup은 Java로 웹크롤링을 할 때 매우 유용한 라이브러리로 알려져 있습니다.

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

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

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

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

implementation 'org.jsoup:jsoup:1.14.3'

의존성을 추가한 후, 프로젝트를 빌드해 Jsoup 라이브러리를 사용할 준비를 합니다.

2. 웹페이지에서 폼 데이터 추출하기

이제 Jsoup을 사용하여 웹페이지에서 폼 데이터를 추출해보겠습니다. 예를 들어, 다음과 같은 HTML 폼이 있는 웹페이지가 있다고 가정해봅시다:

<form id="myForm" method="post" action="/submit">
    <input type="text" name="username" value="John Doe">
    <input type="password" name="password">
    <input type="submit" value="Submit">
</form>

위의 폼에서 사용자 이름과 패스워드를 추출해보겠습니다. 아래는 Jsoup을 사용하여 폼 데이터를 추출하는 Java 코드입니다:

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

public class FormDataExtractor {
    public static void main(String[] args) throws IOException {
        // 웹페이지 URL
        String url = "https://www.example.com/form-page";

        // Jsoup을 사용하여 웹페이지를 파싱
        Document doc = Jsoup.connect(url).get();

        // 폼 요소를 선택
        Element form = doc.selectFirst("form#myForm");

        // 사용자 이름 필드 값 가져오기
        String username = form.selectFirst("input[name=username]").val();
        System.out.println("Username: " + username);

        // 패스워드 필드 값 가져오기
        String password = form.selectFirst("input[name=password]").val();
        System.out.println("Password: " + password);
    }
}

위의 코드에서 우리는 jsoup.Jsoup 클래스를 사용하여 웹페이지를 파싱하고, 폼 요소를 선택한 후 해당 필드의 값을 가져옵니다.

3. 실행 결과

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

Username: John Doe
Password:

위의 결과로 보면, 사용자 이름 필드의 값은 “John Doe”이고 패스워드 필드의 값은 빈 값입니다.

이제 웹페이지의 폼 데이터를 성공적으로 추출한 것입니다. 이렇게 추출한 데이터를 활용하여 다른 작업을 수행할 수 있습니다.

참고 자료