웹 페이지 다운로드하기

Java:
웹 페이지 다운로드하기

How to: (어떻게:)

Java에는 웹 페이지를 다운로드하기 위한 여러 방법이 있지만, 여기서는 java.net.http 패키지를 사용하는 방법에 집중하겠습니다.

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class WebPageDownloader {
    public static void main(String[] args) {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("http://example.com"))
                .build();
        
        client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
              .thenApply(HttpResponse::body)
              .thenAccept(System.out::println)
              .join();
    }
}

실행 결과, http://example.com 의 내용이 콘솔에 출력됩니다. 이 예제는 비동기적으로 웹 페이지를 가져오고, 결과를 콘솔에 인쇄합니다.

Deep Dive (심층 분석)

과거에는 Java에서 웹 페이지를 다운로드하려면 java.net.URL 또는 org.apache.http 같은 외부 라이브러리를 사용해야 했습니다. 그러나 Java 11부터 java.net.http.HttpClient가 등장하며 더 간결하고 현대적인 API를 제공합니다. 전통적인 방법에 비해 HttpClient는 비동기 처리를 쉽게 하여 성능을 개선해줍니다.

대안으로, Jsoup이나 HtmlUnit과 같은 서드파티 라이브러리를 사용할 수 있습니다. 그들은 웹 스크래핑을 위한 추가적인 기능을 제공하나, 단순 다운로드의 경우에는 HttpClient만으로 충분합니다.

구현 세부 사항에서는 요청 헤더 설정, 타임아웃 지정, 프록시 설정 등의 요소를 설정할 수 있습니다. 또한 HTTP POST, PUT 등의 다른 메서드로의 확장성도 있다는 것을 알아두는 것이 좋습니다.

See Also (추가 정보)