🧑💻 Selenium 크롤링을 위한 준비 및 설치
웹 크롤링을 할 때 Selenium은 웹 브라우저를 자동으로 제어할 수 있는 매우 유용한 라이브러리입니다. 이 포스팅에서는 Selenium을 사용하기 위한 준비과정, 크롬 드라이버 설치 방법, 그리고 Selenium을 실행하는 기본적인 방법을 안내합니다.
📌 1. 크롤링을 위한 준비
🛠️ (1) Selenium 설치
Selenium을 사용하기 위해선 먼저 Selenium 라이브러리를 설치해야 합니다.
!pip install selenium
- Selenium: Python을 통해 웹 브라우저를 제어할 수 있는 라이브러리로, 웹 페이지를 자동으로 탐색하고 데이터를 추출하는 데 사용됩니다.
🧑💻 (2) 크롬 드라이버 자동 다운로드
Selenium을 실행하려면 크롬 드라이버가 필요합니다. 이를 자동으로 다운로드할 수 있는 webdriver-manager를 사용합니다.
- webdriver-manager 설치
!pip install webdriver-manager
- 크롬 드라이버 설치 및 실행
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
# 크롬 드라이버 자동 다운로드 및 설치
ChromeDriverManager().install()
# 웹드라이버 실행
browser = webdriver.Chrome()
🛠️ 2. Selenium 실행 및 웹 브라우저 제어
이제 Selenium을 통해 실제로 웹 브라우저를 제어해 보겠습니다.
🧑💻 (1) 경로 설정 및 웹 브라우저 실행
- 상대 경로 사용
path = "./chromedriver" # 상대 경로로 크롬 드라이버 설정
browser = webdriver.Chrome(path) # 웹드라이버 실행
browser.get("http://naver.com") # 지정된 URL로 이동
- 절대 경로 사용
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 |