Database

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

Chansman 2025. 3. 24. 16:40

 

📚 웹 크롤링: YES24 베스트셀러 페이지에서 링크 수집하기

웹 크롤링을 통해 YES24의 베스트셀러 페이지에서 책 링크들을 자동으로 수집하는 방법을 소개합니다. 이번 포스팅에서는 Selenium을 사용하여, 여러 페이지에 걸쳐 링크를 수집하는 방법을 단계별로 설명합니다.


📌 1. 크롤링 준비: Selenium 및 브라우저 설정

먼저, Selenium을 사용하여 YES24의 베스트셀러 페이지를 크롤링할 수 있는 준비를 합니다.

🛠️ 필요한 라이브러리 설치

Selenium을 사용하려면 먼저 Selenium을 설치해야 합니다. 또한, webdriver-manager를 사용하여 크롬 드라이버를 자동으로 설치합니다.

!pip install selenium webdriver-manager

🧑‍💻 브라우저 설정

Selenium을 사용하여 웹 페이지를 제어하려면 브라우저와 드라이버를 설정해야 합니다.

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# 크롬 드라이버 설치 및 실행
browser = webdriver.Chrome(ChromeDriverManager().install())

📌 2. 1페이지 링크 수집

첫 번째로, YES24 베스트셀러 페이지의 첫 번째 페이지에서 책 링크를 수집하는 방법을 소개합니다.

🧑‍💻 한 개의 베스트셀러 링크 수집

url = 'https://www.yes24.com/product/category/bestseller?CategoryNumber=001&sumgb=06'
browser.get(url)

# 한 개의 베스트셀러 링크 수집
book_link = browser.find_element(By.CLASS_NAME, 'gd_name').get_attribute('href')
print(book_link)
  • find_element(By.CLASS_NAME, 'gd_name'): 책 제목을 포함하는 HTML 요소를 찾습니다.
  • get_attribute('href'): 해당 요소의 **링크(href)**를 가져옵니다.

🧑‍💻 1페이지의 모든 베스트셀러 링크 수집

1페이지에 있는 모든 책의 링크를 수집하려면 find_elements를 사용합니다. find_elements는 여러 요소를 반환하므로, 이를 통해 각 책의 링크를 추출할 수 있습니다.

# 1페이지 전체의 링크 데이터 수집
datas = browser.find_elements(By.CLASS_NAME, 'gd_name')

for i in datas:
    print(i.get_attribute('href'))
  • find_elements: 여러 개의 요소를 리스트로 반환합니다. 각 요소에 대해 get_attribute('href')로 링크를 가져옵니다.

📌 3. 3페이지까지의 링크 데이터 수집

이제 3페이지에 걸쳐 책 링크를 수집하는 방법을 소개합니다. 각 페이지마다 링크를 수집하고, **link_list**라는 리스트에 저장합니다.

🧑‍💻 3페이지에 걸쳐 링크 수집

import time

link_list = []

# 1부터 3까지의 페이지를 크롤링
for i in range(1, 4):
    print("*" * 10, f"현재 {i} 페이지 수집 중 입니다.", "*" * 10)
    
    # 각 페이지의 URL 구성
    url = f'https://www.yes24.com/product/category/bestseller?categoryNumber=001&pageNumber={i}&pageSize=24'
    browser.get(url)

    # 페이지에서 모든 링크 데이터 수집
    datas = browser.find_elements(By.CLASS_NAME, 'gd_name')

    for i in datas:
        link = i.get_attribute('href')
        link_list.append(link)  # 링크 리스트에 추가

    time.sleep(3)  # 잠시 대기하여 서버 과부하 방지

# 수집된 링크 출력
print(link_list)

# 수집된 링크 개수 확인
print(len(link_list))
  • url: 각 페이지에 맞는 URL을 동적으로 생성합니다. pageNumber를 1, 2, 3으로 변경하면서 각 페이지를 수집합니다.
  • find_elements(By.CLASS_NAME, 'gd_name'): 페이지에서 책의 제목을 포함하는 모든 요소를 찾아서 리스트로 반환합니다.
  • get_attribute('href'): 각 책의 링크를 추출합니다.
  • link_list.append(link): 추출한 링크를 리스트에 저장합니다.
  • time.sleep(3): 서버에 부담을 줄이기 위해 각 페이지 사이에 3초 간의 대기 시간을 설정합니다.

4. 마무리

이번 포스팅에서는 Selenium을 활용하여 YES24 베스트셀러 페이지에서 책 링크를 수집하는 방법을 소개했습니다. 이 방법을 활용하면 원하는 페이지에 있는 책의 정보를 자동으로 크롤링할 수 있습니다.

🔧 핵심 포인트

  • find_element vs find_elements: find_element는 하나의 요소를, find_elements는 여러 개의 요소를 반환합니다.
  • 동적 URL 생성: 페이지 번호를 동적으로 생성하여 여러 페이지의 데이터를 수집합니다.
  • 서버에 과부하를 줄이기 위한 대기 시간: time.sleep()을 사용하여 각 페이지를 수집한 후 서버에 과부하를 주지 않도록 합니다.

이제 YES24와 같은 웹사이트에서 책 정보를 자동으로 수집하는 작업을 손쉽게 할 수 있습니다! 🚀


이 포스팅을 통해 Selenium을 사용한 웹 크롤링의 기본적인 활용 방법을 익히고, 데이터를 효율적으로 수집하는 방법을 배웠습니다. Happy Crawling! 😊