Chapter 5-32. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(3/7)

2025. 3. 24. 19:01·Database
목차
  1. 왜 이런 방식으로 데이터를 추출할까요?

 

📌 개념 정리

이 글에서는 Selenium을 사용해 웹 페이지에서 데이터를 수집하는 기본적인 방법과 프로세스를 설명합니다. Selenium은 웹 브라우저 자동화 도구로, 실제 사용자가 브라우저에서 수행하는 동작을 프로그램적으로 제어할 수 있도록 해줍니다.

특히 웹 페이지에서 특정 데이터를 크롤링할 때 Selenium을 자주 사용하는 이유는:

  • 자바스크립트로 동적 생성된 페이지에서도 데이터를 추출할 수 있음
  • 클릭, 스크롤 등 실제 사용자 액션을 모방하여 데이터를 수집 가능

이러한 특징 덕분에 BeautifulSoup 등 정적 페이지 크롤링 도구의 한계를 극복할 수 있습니다.


🚦 동작 원리 및 구조

다음과 같은 프로세스로 동작합니다:

  1. 웹 드라이버 실행: Selenium의 웹 드라이버를 실행하여 자동화 브라우저를 연다.
  2. 페이지 접속: 원하는 웹 페이지 URL로 이동한다.
  3. HTML 요소 찾기: 페이지의 데이터를 가지고 있는 HTML 요소를 찾아 데이터를 추출한다.
  4. 데이터 정제: 추출된 데이터를 필요한 형태로 변형 및 정제한다.

💻 코드 예시 및 흐름 분석

코드 예시와 상세한 흐름 분석입니다:

# 웹 페이지 접속
browser.get(link_list[0])

# 책 제목 가져오기
title = browser.find_element(By.CLASS_NAME, 'gd_name').text
# 클래스가 'gd_name'인 요소는 책의 제목을 포함하고 있음

# 저자 가져오기
author = browser.find_element(By.CLASS_NAME, 'gd_auth').text
# 클래스가 'gd_auth'인 요소에서 저자명을 가져옴

# 출판사 정보
publisher = browser.find_element(By.CLASS_NAME, 'gd_pub').text
# 출판사 정보를 가지고 있는 요소

# 출간일 가져오기
publishing = browser.find_element(By.CLASS_NAME, 'gd_date').text
# 책이 출간된 날짜 정보를 추출

# 평점 추출하기
rating = browser.find_element(By.CLASS_NAME, 'yes_b').text
# 사용자 평점을 제공하는 요소의 텍스트

# 리뷰 개수 추출
reviews = browser.find_element(By.CLASS_NAME, 'txC_blue').text
# 리뷰 개수를 나타내는 클래스의 텍스트

# 판매량 추출 및 정제
sales = browser.find_element(By.CLASS_NAME, 'gd_sellNum').text.split(" ")[2]
# 판매량 텍스트에서 공백을 기준으로 나눠 3번째 단어만 추출

# 가격 추출 및 정제
price = browser.find_element(By.CLASS_NAME, 'yes_m').text[:-1]
# 가격 끝에 있는 '원' 문자를 제외한 숫자만 가져옴

# 순위 정보 추출
ranking = browser.find_element(By.CLASS_NAME, 'gd_best').find_element(By.TAG_NAME, 'a').text
# 순위 정보를 포함한 하위 링크(a 태그)의 텍스트

ranking_details = browser.find_element(By.CLASS_NAME, 'gd_best').text.split(" | ")
ranking1 = ranking_details[0]
ranking2 = ranking_details[1]
# 전체 순위 정보를 '|' 기준으로 나눠 카테고리별 상세 순위로 나눔

왜 이런 방식으로 데이터를 추출할까요?

  • 대부분 웹 페이지는 특정 클래스명을 기준으로 원하는 정보를 표시합니다. Selenium은 이 클래스명을 통해 쉽고 빠르게 원하는 데이터를 찾을 수 있도록 해줍니니다.
  • 문자열을 split하거나 특정 문자를 제거하는 이유는 추출된 텍스트가 깔끔한 데이터 형식으로 변환되어 사용하기 편리하도록 하기 위함입니다.

🧪 실전 사례

실제 프로젝트에서 활용할 수 있는 사례입니다:

  • 온라인 서점에서 매일 인기 책 정보를 자동으로 수집하여 데이터베이스에 저장
  • 경쟁 사이트와 가격 비교 자동화 시스템 구축
  • 정기적인 상품 리뷰 및 평점 데이터 수집 후 분석 시스템 구축

🧠 고급 팁 및 자주 하는 실수

✔️ 고급 팁

  • 동적 웹페이지에서는 반드시 WebDriverWait을 활용하여 요소가 완전히 로딩될 때까지 기다린 후 데이터를 추출하세요.
  • XPath 또는 CSS Selector를 이용하면 더욱 정확하고 유연한 요소 탐색이 가능합니다.

❌ 자주 하는 실수

  • 클래스 이름이 변경될 때마다 코드가 깨질 수 있으므로, 사이트 변경에 대비해 주기적으로 유지 보수를 수행해야 합니다.
  • 단순히 time.sleep()만 사용하면 페이지 로딩이 느릴 때 데이터가 누락될 수 있습니다. 이를 방지하기 위해 꼭 Selenium의 명시적 대기를 활용하세요.

✅ 마무리 요약 및 복습 포인트

  • Selenium을 이용하면 복잡하고 동적인 웹사이트에서도 쉽게 데이터를 추출할 수 있습니다.
  • 데이터를 정확히 찾기 위해 클래스명과 같은 HTML 요소를 적극 활용하고, 추출된 데이터를 명확히 정리하여 후속 작업에 편하게 활용해야 합니다.
  • 실제 환경에서는 페이지 로딩 속도, 동적 요소 로딩, 클래스명 변경과 같은 요소를 항상 주의해야 합니다.

이 내용을 바탕으로 여러분의 웹 크롤링 프로젝트를 성공적으로 구축하시길 바랍니다! 🚀

'Database' 카테고리의 다른 글

Chapter 6-33. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(4/7)  (0) 2025.03.25
Database 라이브 세션 과제 1 [데이터베이스 설계를 위한 관계정의]  (0) 2025.03.25
Chapter 5-32. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(2/7)  (0) 2025.03.24
Chapter 5-30. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(1/7) 가상환경셋팅  (0) 2025.03.24
Chapter 5-30. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(1/7)  (0) 2025.03.24
  1. 왜 이런 방식으로 데이터를 추출할까요?
'Database' 카테고리의 다른 글
  • Chapter 6-33. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(4/7)
  • Database 라이브 세션 과제 1 [데이터베이스 설계를 위한 관계정의]
  • Chapter 5-32. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(2/7)
  • Chapter 5-30. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(1/7) 가상환경셋팅
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (597) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (10)
      • 특강 (29)
      • 기술블로그 (32)
      • 기술블로그-Django편 (136) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4) N
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (61)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 5-32. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(3/7)

개인정보

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

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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