반응형
여승철
INTP 개발자
여승철
  • 분류 전체보기 (376)
    • CS (16)
      • 면접 준비 (7)
      • 운영체제 (0)
      • 네트워크 (2)
      • HTTP (6)
      • 스프링(Spring) IoC 컨테이너 (0)
      • 알고리즘 (1)
    • Web (13)
    • AWS (6)
    • Java (43)
    • JSP & Servlet (65)
      • 개념 (42)
      • 실습 (23)
    • Spring Framework (33)
    • Spring Boot (10)
    • Spring Data (22)
      • JPA (14)
      • Query DSL (7)
      • Redis (1)
    • Spring Security (9)
    • Spring Batch (4)
    • MyBatis (10)
    • Front-End (51)
      • JS (27)
      • Vue.js (17)
      • React (5)
      • JQuery (0)
      • d3.js (2)
    • DBMS (24)
      • SQL, RDBMS (16)
      • MongoDB (5)
      • Redis (3)
    • Kafka (3)
    • 리눅스 (Linux) (4)
    • 디자인 패턴 (3)
    • VCS (8)
    • API (0)
    • TOOL (3)
    • Reading Book (28)
      • 이펙티브 자바 (11)
      • Clean Code (10)
      • 1분 설명력 (4)
      • HOW TO 맥킨지 문제해결의 기술 (3)
    • C# (4)
    • NSIS (6)
    • ETC (11)

블로그 메뉴

  • 홈
  • 태그

인기 글

태그

  • querydsl
  • jsp
  • EC2
  • 게시판
  • servlet
  • HTTP
  • 맥킨지
  • 회원 관리
  • 로그인
  • controller
  • Dao
  • 디자인 패턴
  • mybatis
  • JSTL
  • JDBC
  • Spring Batch
  • 환경 세팅
  • 이펙티브 자바
  • ubuntu
  • 스트림

최근 댓글

최근 글

hELLO· Designed By 정상우.
여승철

INTP 개발자

Spring Boot

Spring Boot Jsoup을 통한 웹 크롤링

2023. 12. 12. 16:04
반응형

웹 크롤링이란?

웹 크롤링은 웹 사이트에서 정보를 수집하고 추출하는 자동화된 프로세스를 의미합니다.

웹 크롤링은 일반적으로 웹 사이트의 robots.txt 파일을 준수하고, 무분별한 크롤링이나 스크래핑이 웹 서버에 부하를 일으키지 않도록 주의해야 합니다. 또한, 웹 사이트의 이용 약관을 준수해야 하며, 합법적인 목적으로만 사용해야 합니다. 크롤링을 할 때는 데이터 소유자의 권리를 존중하고 윤리적인 사용을 지키는 것이 중요합니다.

 

Jsoup

Jsoup은 HTML 파싱 및 조작을 위한 자바 라이브러리로, 웹 크롤링 작업에서 많이 사용됩니다. Jsoup을 통해 HTML 문서에서 원하는 정보를 추출할 수 있습니다.

 

Jsoup 라이브러리 추가

dependencies {
    implementation 'org.jsoup:jsoup:1.14.3' // 최신 버전 확인 후 사용
}

 

문법

웹 페이지에서 HTML 가져오기

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;

public class WebCrawler {

    public static void main(String[] args) {
        try {
            // 웹 페이지에서 HTML 문서 가져오기
            String url = "https://example.com";
            Document document = Jsoup.connect(url).get();
            
            // document를 이용하여 원하는 작업 수행 ...
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

CSS Selector를 사용하여 요소 선택

// 웹 페이지에서 모든 링크 추출
Elements links = document.select("a[href]");
for (Element link : links) {
    System.out.println("Link: " + link.attr("href"));
}

 

요소의 텍스트 가져오기

// 웹 페이지에서 제목 추출
Element titleElement = document.select("title").first();
String title = titleElement.text();
System.out.println("Title: " + title);

 

특정 속성 값 가져오기

// 이미지 태그의 src 속성 값 추출
Elements images = document.select("img");
for (Element image : images) {
    String src = image.attr("src");
    System.out.println("Image Source: " + src);
}

 

특정 클래스를 가진 요소 선택하기

// 클래스가 "exampleClass"인 모든 div 요소 선택
Elements divs = document.select("div.exampleClass");
for (Element div : divs) {
    System.out.println("Div Content: " + div.text());
}

 

부모 및 자식 요소 선택하기

// 특정 div의 직계 자식으로 있는 p 태그 선택
Element specificDiv = document.select("div#specificDivId").first();
Elements paragraphs = specificDiv.select("> p");
for (Element paragraph : paragraphs) {
    System.out.println("Paragraph: " + paragraph.text());
}

 

HTML 소스코드 문자열로 가져오기

// HTML 소스코드 문자열로 가져오기
String htmlSource = document.html();
System.out.println("HTML Source: " + htmlSource);

 

여러 페이지 크롤링 가능

// 여러 페이지 크롤링 예제
for (int i = 1; i <= 3; i++) {
    String pageUrl = "https://example.com/page" + i;
    Document pageDocument = Jsoup.connect(pageUrl).get();
    
    //...
}
반응형

'Spring Boot' 카테고리의 다른 글

Spring Boot 캐시 Cache 구현하기 (spring-context-support? redis?)  (0) 2024.02.05
Spring Boot Custom Validation 어노테이션 만들기  (0) 2023.12.13
Spring Boot Validation @NotNull, @NotEmpty, @NotBlank 차이점  (0) 2023.10.24
SpringBoot에서 JUnit5로 효율적인 단위 테스트 작성하기, Assertions로 값 검증하기  (0) 2023.10.04
SpringBoot에서 MockMvc을 활용한 컨트롤러, HTTP 요청 테스트 방법  (0) 2023.10.04
    여승철
    여승철

    티스토리툴바