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

2025. 3. 24. 15:39·Database

 

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

'Database' 카테고리의 다른 글

Chapter 5-32. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(2/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
Database - Chapter 5-28. PyMySQL 연습(2/3)  (0) 2025.03.24
Database - Chapter 5-28. PyMySQL 연습(1/3)  (0) 2025.03.24
'Database' 카테고리의 다른 글
  • Chapter 5-32. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(2/7)
  • Chapter 5-30. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(1/7) 가상환경셋팅
  • Database - Chapter 5-28. PyMySQL 연습(3/3)
  • Database - Chapter 5-28. PyMySQL 연습(2/3)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (807)
      • Python (32)
      • 프로젝트 (116)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (42)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    btsdischarge
    뷔
    homebartrend
    hotcoffeecase
    self-growth
    college reunions
    lawsuitculture
    smartphonedurability
    americaparty
    basalcellcarcinoma
    chinanightlife
    livebroadcast
    life reflection
    chatgpterror
    btscomeback
    global politics
    newpoliticalparty
    americanlaw
    btsjungkook
    btsreunion
    RM
    gpterror
    bts
    titaniumcase
    trumpmuskclash
    travel ban
    urbantrends
    youngprofessionals
    remittance
    classaction
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 5-30. Mini Project : 예스24 베스트셀러 데이터 수집 후 데이터 분석하기(1/7)
상단으로

티스토리툴바