Database

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

Chansman 2025. 3. 24. 15:39

 

🧑‍💻 Selenium 크롤링을 위한 준비 및 설치

웹 크롤링을 할 때 Selenium은 웹 브라우저를 자동으로 제어할 수 있는 매우 유용한 라이브러리입니다. 이 포스팅에서는 Selenium을 사용하기 위한 준비과정, 크롬 드라이버 설치 방법, 그리고 Selenium을 실행하는 기본적인 방법을 안내합니다.


📌 1. 크롤링을 위한 준비

🛠️ (1) Selenium 설치

Selenium을 사용하기 위해선 먼저 Selenium 라이브러리를 설치해야 합니다.

!pip install selenium
  • Selenium: Python을 통해 웹 브라우저를 제어할 수 있는 라이브러리로, 웹 페이지를 자동으로 탐색하고 데이터를 추출하는 데 사용됩니다.

🧑‍💻 (2) 크롬 드라이버 자동 다운로드

Selenium을 실행하려면 크롬 드라이버가 필요합니다. 이를 자동으로 다운로드할 수 있는 webdriver-manager를 사용합니다.

  1. webdriver-manager 설치
!pip install webdriver-manager
  1. 크롬 드라이버 설치 및 실행
 
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# 크롬 드라이버 자동 다운로드 및 설치
ChromeDriverManager().install()

# 웹드라이버 실행
browser = webdriver.Chrome()

🛠️ 2. Selenium 실행 및 웹 브라우저 제어

이제 Selenium을 통해 실제로 웹 브라우저를 제어해 보겠습니다.

🧑‍💻 (1) 경로 설정 및 웹 브라우저 실행

  1. 상대 경로 사용
path = "./chromedriver"  # 상대 경로로 크롬 드라이버 설정
browser = webdriver.Chrome(path)  # 웹드라이버 실행
browser.get("http://naver.com")  # 지정된 URL로 이동
  1. 절대 경로 사용
import os
path = os.getcwd() + "/chromedriver"  # 절대 경로로 크롬 드라이버 설정
browser = webdriver.Chrome(path)  # 웹드라이버 실행
browser.get("http://naver.com")  # 지정된 URL로 이동

🧑‍💻 (2) 기본 함수 사용하기

Selenium을 사용하여 웹 브라우저를 제어할 때 유용한 기본 함수들이 있습니다.

  • 뒤로 가기: 현재 페이지에서 이전 페이지로 이동
browser.back()
  • 앞으로 가기: 현재 페이지에서 다음 페이지로 이동
browser.forward()
  • 새로 고침: 현재 페이지를 새로 고침
browser.refresh()

 


📦 3. Jupyter 환경에서 Selenium 사용

Selenium을 Jupyter Notebook에서 사용할 때 몇 가지 추가 설치가 필요합니다.

🧑‍💻 (1) Jupyter 확장 프로그램 설치

!pip install ipykernel

Jupyter 환경에서 Python 라이브러리와 함께 크롬 브라우저를 실행하는 데 필요한 패키지입니다.


🔍 4. 기본적인 웹 요소 찾기

Selenium을 사용하여 웹 페이지에서 원하는 요소를 찾고 데이터를 추출할 수 있습니다. 예를 들어, Google에서 특정 클래스를 가진 요소를 추출하는 방법은 다음과 같습니다.

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

# 브라우저 열기
browser = webdriver.Chrome()

# URL로 이동
url = 'https://www.google.com'
browser.get(url)

# 웹 요소 찾기
element = browser.find_element(By.CLASS_NAME, 'uU7dJb').text
print(element)

이 코드에서 find_element() 메서드는 특정 클래스를 가진 웹 요소를 찾고, text 속성을 사용하여 해당 요소의 텍스트를 추출합니다.


마무리

Selenium을 사용하여 크롬 브라우저를 자동으로 제어할 수 있는 방법을 살펴보았습니다. Selenium은 웹 크롤링을 자동화하고, 데이터를 추출하는 데 매우 유용한 도구입니다. 이번 포스팅에서 소개한 내용을 통해 웹 페이지를 탐색하고, 필요한 데이터를 손쉽게 추출할 수 있습니다.

🔧 핵심 포인트

  • Selenium 설치: !pip install selenium으로 설치
  • 크롬 드라이버 설치: webdriver-manager로 자동 다운로드 및 설치
  • 브라우저 제어: back(), forward(), refresh() 등 기본 함수 사용
  • 웹 요소 추출: find_element()와 By를 사용하여 웹 요소 찾기

📌 3. 요소 찾기: By 사용법

 

By 사용법 Selenium에서 웹 요소를 찾을 때는 By 모듈을 사용합니다. By는 다양한 방식으로 요소를 찾을 수 있게 해주며, 상황에 따라 적절한 방식을 선택하는 것이 중요합니다.

🧑‍💻 (1) By.CLASS_NAME: 클래스명으로 요소 찾기

from selenium.webdriver.common.by import By

# 클래스를 사용하여 요소 찾기
browser.find_element(By.CLASS_NAME, "shortcut_list")
  • 클래스명이 중복될 경우 첫 번째 요소만 선택됨
  • 여러 개의 요소를 모두 찾고 싶을 땐 find_elements 사용

🧑‍💻 (2) By.TAG_NAME: 태그 이름으로 요소 찾기

browser.find_element(By.TAG_NAME, "a")  # <a> 태그로 링크 찾기
  • 주로 모든 링크 요소를 가져올 때 사용

🧑‍💻 (3) By.ID: id 값으로 요소 찾기

browser.find_element(By.ID, "search_btn")
  • id는 유일하므로 가장 정확한 선택 방식

🧑‍💻 (4) By.XPATH: 경로로 요소 찾기

browser.find_element(By.XPATH, "//div[@class='search_box']")
  • HTML 구조가 복잡하거나 클래스명이 반복될 경우 유용

📌 4. Keys 사용법:

 

키보드 제어 Selenium에서는 Keys 모듈을 통해 키보드 입력을 자동화할 수 있습니다.

🧑‍💻 (1) 버튼 클릭 및 검색어 입력

from selenium.webdriver.common.by import By

browser.find_element(By.ID, 'query').click()  # 검색창 클릭
browser.find_element(By.ID, 'query').send_keys("날씨")  # 검색어 입력
browser.find_element(By.ID, 'search_btn').click()  # 검색 버튼 클릭

🧑‍💻 (2) Keys 라이브러리 사용: 엔터 키 입력

from selenium.webdriver.common.keys import Keys

elem = browser.find_element(By.ID, 'query')
elem.send_keys("날씨")
elem.send_keys(Keys.ENTER)
  • Keys.ENTER, Keys.TAB, Keys.SPACE 등 다양한 키 입력 가능

📌 5. 단일 요소 vs 복수 요소 추출

 

🧑‍💻 (1) 단일 요소 추출

element = browser.find_element(By.ID, "search_btn")
print(element.text)
  • find_element: 첫 번째 일치하는 단일 요소 반환

🧑‍💻 (2) 복수 요소 추출

elements = browser.find_elements(By.CLASS_NAME, "shortcut_list")
for element in elements:
    print(element.text)
  • find_elements: 일치하는 모든 요소를 리스트로 반환

✅ 마무리 요약

🔧 핵심 포인트 정리:

  • By 사용법: CLASS_NAME, TAG_NAME, ID, XPATH 등 다양한 방법으로 요소 탐색 가능
  • Keys 사용법: 키보드 입력 자동화로 사용자 입력 시뮬레이션 가능
  • 단일 vs 복수 요소: 상황에 따라 find_element vs find_elements 선택

이제 Selenium을 통해 웹페이지의 요소를 더욱 자유롭게 탐색하고 제어할 수 있습니다. 이를 바탕으로 다양한 웹 자동화 작업을 효율적으로 수행해보세요! 🚀