Database

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

Chansman 2025. 3. 25. 12:31

📌 크롤링으로 YES24 베스트셀러 데이터 수집하기

이번 글에서는 Python을 이용하여 YES24 베스트셀러 페이지의 도서 정보를 수집하는 방법을 단계별로 정리합니다.

🚦 수집할 데이터 항목 다음과 같은 정보를 크롤링하여 데이터베이스에 저장할 예정입니다.

항목 설명

책 제목(title) 도서명
저자(author) 저자명
출판사(publisher) 출판사명
출판일(publishing) 책 출판 날짜
평점(rating) 책의 평균 평점
리뷰(review) 리뷰 수
판매지수(sales) 판매 지수
가격(price) 책 가격
국내도서랭킹(ranking) 현재 국내 도서 순위
국내도서TOP100(ranking_weeks) TOP 100 유지 기간(주)

💻 데이터베이스 테이블 생성 (SQL 예시)

CREATE TABLE Books (
    bookID INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    author VARCHAR(255),
    publisher VARCHAR(255),
    publishing DATE,
    rating DECIMAL(3, 1),
    review INT,
    sales INT,
    price DECIMAL(10, 2),
    ranking INT,
    ranking_weeks INT
);

🧪 크롤링 코드 예시 (Python)

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('http://www.yes24.com/24/category/bestseller')

books = browser.find_elements(By.CSS_SELECTOR, '.goodsTxtInfo')

for rank, book in enumerate(books, start=1):
    title = book.find_element(By.CSS_SELECTOR, '.goods_name').text
    author = book.find_element(By.CSS_SELECTOR, '.aupu a:nth-child(1)').text
    publisher = book.find_element(By.CSS_SELECTOR, '.aupu a:nth-child(2)').text
    publishing = book.find_element(By.CSS_SELECTOR, '.aupu').text.split('|')[-1].strip()
    rating = float(book.find_element(By.CSS_SELECTOR, '.gd_rating .yes_b').text)
    review = int(book.find_element(By.CSS_SELECTOR, '.gd_reviewCount em').text.replace(',', ''))
    sales = int(book.find_element(By.CSS_SELECTOR, '.gd_sellNum').text.replace(',', '').split(' ')[2])
    price = float(book.find_element(By.CSS_SELECTOR, '.goods_price em').text.replace(',', ''))
    
    try:
        ranking_weeks = int(book.find_element(By.CSS_SELECTOR, '.gd_best').text.split(' | ')[1].split(' ')[2][:-1])
    except IndexError:
        ranking_weeks = 0  # 값이 없을 경우 기본값 설정

    # 여기서 수집된 데이터를 데이터베이스에 저장

🧠 크롤링 고급 팁

  • 예외처리(try-except) 필수 사용 (데이터 없을 경우 대응)
  • CSS 선택자는 웹페이지 변경 시 수정 필요성이 높음, XPath 병행도 추천
  • 반복적인 데이터 접근을 최소화하여 효율성을 높이기

✅ 마무리 요약

  • YES24 베스트셀러 페이지 데이터를 크롤링하여 DB에 저장할 수 있는 기본 코드 구조
  • 테이블 설계와 크롤링 데이터를 매칭해 정확한 데이터베이스 구조 구성
  • 예외처리를 통해 안정적인 크롤링 수행 가능

이제 여러분도 YES24 데이터를 손쉽게 수집해보세요! 🚀