[JAVA] JAVA 웹 크롤링 맛보기, 예시

2024. 7. 25. 17:46·JAVA
목차
  1. 웹 크롤링이란?
  2. 웹 크롤링 과정
  3. Jsoup ? 

웹 크롤링이란?

인터넷 상의 웹 페이지를 자동으로 탐색하고 정보를 수집하는 프로세스를 말한다. 주로 검색 엔진이나 데이터 수집을 목적으로 사용된다. 


웹 크롤링 과정

  1. URL 탐색: 크롤러(Crawler)라고도 불리는 프로그램은 먼저 시작 URL을 설정하고 이를 기반으로 다른 페이지로 이동한다. 일반적으로 시작 URL은 특정 웹사이트의 첫 페이지가 된다.
  2. 웹 페이지 다운로드: 크롤러는 HTTP 또는 HTTPS 프로토콜을 사용하여 웹 서버에 요청을 보내고, 웹 페이지의 HTML 문서를 다운로드한다.
  3. HTML 파싱: 다운로드한 HTML 문서를 파싱하여 원하는 데이터를 추출한다. 일반적으로 이는 특정 태그(예: <a>, <div>, <p> 등)의 내용을 추출하거나, 특정 속성(예: href, src 등)의 값을 가져오는 과정을 포함한다.
  4. 데이터 추출: 파싱된 데이터에서 필요한 정보를 추출한다. 이 정보는 텍스트, 이미지, 링크, 메타 데이터 등 다양할 수 있다.
  5. 데이터 저장 또는 처리: 추출한 데이터를 필요에 따라 저장하거나, 다른 시스템으로 전달하여 추가적인 처리를 한다. 예를 들어, 데이터베이스에 저장하거나 분석하여 결과를 생성할 수 있다.
  6. 재귀적 탐색: 크롤러는 일반적으로 초기 URL에서 시작하여 링크를 따라가며 재귀적으로 탐색을 진행한다. 이 과정을 통해 웹 사이트 전체 또는 특정 부분을 전체적으로 탐색할 수 있다.

나는 Java 웹 크롤링 라이브러리인 Jsoup을 이용하여 크롤링을 시도했다.

Jsoup ? 

  • Jsoup은 Java로 작성된 HTML 파싱 및 조작 라이브러리다.
  • 간편하게 HTML 문서를 로드하고, CSS 선택자를 사용하여 원하는 요소를 선택할 수 있다.
  • 웹 페이지의 구조를 탐색하고 데이터를 추출하는 데 매우 유용하다.

나는 예시로 교보문고 사이트를 웹 크롤링 해보았다.

웹 크롤링이 가능한 사이트가 있고, 불가능한 사이트가 있는데, 몇번의 시도 끝에 가능한 사이트를 찾았다.

 

아래는 교보문고 사이트를 크롤링한 예시이다.

메인 페이지에 보이는 책들의 이름을 크롤링해보았다. 

package crawling;

import java.io.IOException;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
// java.xxx.Xxxxx
// org.xxx.Xxxxx
// 회사명.xxx.Xxxxx >> 외부 라이브러리
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

// 웹 크롤링 : 웹 데이터 모아서 정제 및 가공
// 정적 크롤링 => 웹 페이지에만 접근
//              페이지에 직접 작성된 데이터만 접근가능
//              "페이지 소스 코드 보기"로 보이는 데이터만 가져오는것
//              ex) jsoup <<
// 동적 크롤링 => 웹 페이지가 참조하는 데이터까지 접근가능
//              본 서버의 데이터를 암호화했다면 접근불가능

// 오피지지 웹 사이트는
// 페이지 골격코드만 만듦
// 실시간으로 데이터를 본 서버에서 받아오는 구조
//  => 동적 크롤링을 사용해야함

// 웹 크롤링
public class Test02 {
	public static void main(String[] args) {

		String url="https://www.kyobobook.co.kr/";
		// 웹 페이지에서 "index"란, 표지 페이지(첫 페이지)를 의미함
		
		Connection conn = Jsoup.connect(url);
		// Jsoup으로 url 연결시도
		// 연결객체가 반환됨
		
		// Jsoup은 JAVA의 기본 패키지가 아니다.
		//                   라이브러리 == 소스코드모음집
		// Jsoup 라이브러리를 별도로 설치해야함
		//  .jar JAVA아카이브==JAVA압축파일==소스코드모음집==라이브러리==패키지
		
		try {
			Document doc = conn.get();
			
			Elements elems= doc.select("h3.prod_name");
			
			for(Element elem:elems) {
				System.out.println(elem.text());
			}
		} catch (IOException e) {
			System.out.println("연결중 에러발생!");
		}
		// Document 란?
		// 웹 페이지 화면 문서를 의미함
	}
}

 

 

위 코드를 실행하면 다음과 같이 나온다.

 

 

'JAVA' 카테고리의 다른 글

JDBC Util  (0) 2024.07.31
[JAVA] 파일 입출력 예제  (0) 2024.07.25
[JAVA] 스레드 Thread  (1) 2024.07.24
[JAVA] try-catch Exception (예외처리)  (1) 2024.07.24
[JAVA] 예제 - 응집도와 결합도를 고려해 학생부 프로그램 만들기  (0) 2024.07.18
  1. 웹 크롤링이란?
  2. 웹 크롤링 과정
  3. Jsoup ? 
'JAVA' 카테고리의 다른 글
  • JDBC Util
  • [JAVA] 파일 입출력 예제
  • [JAVA] 스레드 Thread
  • [JAVA] try-catch Exception (예외처리)
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    정보처리기사 실기
    어노테이션
    recoverabledataaccessexception
    상속
    jsp
    2-layered 아키텍처
    @repository
    Spring
    오블완
    java
    정처기 실기
    aop
    DispatcherServlet
    MVC
    객체지향
    티스토리챌린지
    codeup 4891 : 행복
    생성자
    Di
    오버로딩
    @service
    @Component
    멘토씨리즈 자바
    ViewResolver
    스프링 프레임워크
    수제비
    정처기
    정보처리기사
    html
    이벤트 스케줄러
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
[JAVA] JAVA 웹 크롤링 맛보기, 예시

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.