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 데이터를 손쉽게 수집해보세요! 🚀