[java] Jsoup을 사용하여 웹페이지 이미지 크롤링하기

이번 글에서는 Java의 Jsoup 라이브러리를 사용하여 웹페이지의 이미지를 크롤링하는 방법에 대해 알아보겠습니다.

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

먼저, Jsoup 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 종속성을 추가합니다:

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

Gradle을 사용하는 경우, build.gradle 파일에 다음 의존성을 추가합니다:

implementation 'org.jsoup:jsoup:1.13.1'

의존성을 추가한 다음 프로젝트를 업데이트합니다.

2. 웹페이지에서 이미지 URL 추출하기

이제 Jsoup을 사용하여 웹페이지에서 이미지 URL을 추출할 수 있습니다. 다음은 간단한 예제 코드입니다:

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

import java.io.IOException;

public class ImageCrawler {

    public static void main(String[] args) {
        String url = "https://example.com";
        
        try {
            Document doc = Jsoup.connect(url).get();
            Elements images = doc.getElementsByTag("img");
            
            for (Element image : images) {
                String imageUrl = image.absUrl("src");
                System.out.println("Image URL: " + imageUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 Jsoup의 connect 메서드를 사용하여 지정한 URL의 웹페이지에 연결하고, getElementsByTag 메서드를 사용하여 img 태그를 가진 요소들을 모두 가져옵니다. 그런 다음 각 이미지 요소에서 absUrl 메서드를 사용하여 이미지의 절대 URL을 추출하고, 출력합니다.

3. 이미지 다운로드하기

이미지의 URL을 추출했다면, 이미지를 다운로드할 수도 있습니다. 다음은 예제 코드입니다:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

public class ImageDownloader {
    
    public static void main(String[] args) {
        String imageUrl = "https://example.com/image.jpg";
        String savePath = "C:/Images/image.jpg";
        
        try {
            URL url = new URL(imageUrl);
            File file = new File(savePath);
            FileUtils.copyURLToFile(url, file);
            System.out.println("Image downloaded successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 Apache Commons IO 라이브러리의 FileUtils 클래스를 사용하여 이미지를 다운로드합니다. URL 클래스를 사용하여 이미지의 URL을 생성하고, File 클래스를 사용하여 이미지를 저장할 파일을 생성합니다. 그런 다음 copyURLToFile 메서드를 사용하여 이미지를 다운로드한 다음, 콘솔에 다운로드 완료 메시지를 출력합니다.

결론

이제 Jsoup을 사용하여 Java에서 웹페이지의 이미지를 크롤링하고 다운로드하는 방법을 알아보았습니다. Jsoup은 강력한 크롤링 라이브러리로, 다양한 웹 스크래핑 작업에 유용하게 사용될 수 있습니다. 추가적인 기능과 사용법에 대해서는 Jsoup의 공식 문서를 참고하시기 바랍니다.

참고 문서: