Java

Java | Document Class / Element Class / Jsoup 크롤링 예제 코드

이진유진 2024. 2. 29. 17:49
반응형

Document 및 Element 클래스는, XML 문서를 다루기 위한 DOM(Document Object Model) API에 속하는 클래스입니다. 

1. Document 클래스 

  • Document 클래스는 XML 문서의 전체 구조를 나타냅니다. 
  • Document 객체는 XML 문서의 루트 엘리먼트에 대한 진입점이며, 해당 문서의 전체 트리 구조를 포함합니다. 

2. Element 클래스 

  • Element 클래스는 XML 문서에서 특정 엘리먼트를 나타냅니다. 
  • Element 객체는 XML 문서의 특절 엘리먼트에 대한 정보를 포함하며, 이 엘리먼트의 하위 엘리먼트, 속성 등을 다룰 수 있습니다. 

보통 XML 문서를 파싱할 때, XML 문서의 구조를 Document로 읽어오고, 

그 다음에 원하는 정보 추출을 위하여, Element를 사용합니다. 

 

이와 같은 클래스는, Jsoup 크롤링 시 사용할 수 있습니다. 

 

아래는 예제 코드입니다. 

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 JsoupExample {
    public static void main(String[] args) {
        try {
            // 웹 페이지에서 HTML을 가져오기
            Document document = Jsoup.connect("https://www.example.com").get();

            // 특정 CSS 선택자를 이용하여 엘리먼트 가져오기
            Elements links = document.select("a[href]");

            // 가져온 엘리먼트 순회하며 정보 출력
            for (Element link : links) {
                System.out.println("Link: " + link.attr("href"));
                System.out.println("Text: " + link.text());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

Jsoup 라이브러리 중 eachAttr이라는 메서드가 있습니다. 

eachAttr 메서드는, 특정 Element의 모든 속성을 반복하면서 작업할  때 사용됩니다. 

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

public class JsoupEachAttrExample {
    public static void main(String[] args) {
        String html = "<div id='example' class='container' data-custom='123'>Hello, Jsoup!</div>";

        Document document = Jsoup.parse(html);
        Element element = document.selectFirst("div");

        // 각 속성을 출력하는 예제
        element.eachAttr((key, value) -> {
            System.out.println("Attribute: " + key + " = " + value);
        });
    }
}

 

반응형