📚 웹 크롤링: 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! 😊
'Database' 카테고리의 다른 글
Database 라이브 세션 과제 1 [데이터베이스 설계를 위한 관계정의] (0) | 2025.03.25 |
---|---|
Chapter 5-32. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(3/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 |
Database - Chapter 5-28. PyMySQL 연습(3/3) (0) | 2025.03.24 |