반응형
Selenium은 웹 브라우저를 자동으로 조작할 수 있도록 도와주는 강력한 라이브러리로, 웹 크롤링과 자동화 작업에 많이 활용됩니다. 특히 한국에서는 반복적인 업무 자동화, 데이터 수집, 온라인 예약, 쇼핑몰 크롤링, 공공 데이터 수집 등에 Selenium이 자주 사용됩니다. 이 글에서는 한국 환경에서 Selenium을 활용하는 방법과 실무에서 유용한 예제들을 소개합니다.
1. Selenium 환경 설정 및 기본 사용법
Selenium이란?
Selenium은 웹 브라우저를 제어하는 오픈 소스 도구로, Python을 포함한 다양한 프로그래밍 언어에서 사용할 수 있습니다. 주로 웹 크롤링(스크래핑)이나 웹 애플리케이션 테스트 자동화에 활용됩니다.
Selenium 설치하기
pip install selenium
또한, Selenium이 웹 브라우저를 제어하기 위해서는 웹드라이버(WebDriver)가 필요합니다. 크롬 브라우저를 사용할 경우, 크롬 드라이버를 다운로드해야 합니다.
- 크롬 드라이버 다운로드: ChromeDriver 공식 사이트
Selenium을 이용한 간단한 웹페이지 열기
from selenium import webdriver
driver = webdriver.Chrome() # 크롬 브라우저 실행
driver.get("https://www.interpark.com/") # 인터파크 메인 페이지 열기
2. 예매 사이트에서 공연 정보 가져오기
인터파크 티켓에서 인기 공연 목록 크롤링
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get("https://tickets.interpark.com/") # 인터파크 티켓 메인 페이지
time.sleep(3) # 페이지 로딩 대기
shows = driver.find_elements(By.CLASS_NAME, "bestRankContent")
for idx, show in enumerate(shows[:5]): # 상위 5개 공연만 출력
title = show.find_element(By.CLASS_NAME, "prdTitle").text
print(f"{idx+1}. {title}")
driver.quit()
3. 공공 데이터 포털에서 데이터 자동 다운로드
한국은행 경제통계시스템에서 엑셀 데이터 다운로드하기
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get("https://ecos.bok.or.kr/") # 한국은행 경제통계시스템
time.sleep(3) # 페이지 로딩 대기
search_box = driver.find_element(By.ID, "headerSearchInput")
search_box.send_keys("소비자물가지수")
search_button = driver.find_element(By.ID, "headerSearchBtn")
search_button.click()
time.sleep(3)
first_result = driver.find_element(By.CSS_SELECTOR, ".tableF .first a")
first_result.click()
time.sleep(3)
download_button = driver.find_element(By.CSS_SELECTOR, ".btnDownloadExcel")
download_button.click()
print("엑셀 파일이 다운로드되었습니다.")
driver.quit()
4. 항공권 예약 사이트에서 최저가 항공권 찾기
대한항공 사이트에서 서울-제주 항공권 조회
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get("https://www.koreanair.com/") # 대한항공 홈페이지
time.sleep(3) # 페이지 로딩 대기
departure_input = driver.find_element(By.ID, "input-de
반응형