파이썬으로 웹 데이터를 수집할 때 가장 자주 마주치는 문제 중 하나는 동적 웹페이지 크롤링입니다. 일반적인 웹사이트는 requests + BeautifulSoup
만으로도 충분하지만, 자바스크립트로 렌더링되는 사이트는 그렇지 않습니다. 예를 들어, 스크롤을 내려야 내용이 보이거나 버튼을 눌러야 리스트가 나오는 사이트는 셀레니움(Selenium)이 필요합니다.
이번 글에서는 Selenium을 활용한 동적 웹페이지 크롤링 방법과 함께 실제 사용 예제, 주의할 점까지 전부 소개합니다.
왜 Selenium이 필요한가?
기본적인 웹크롤링 도구인 requests
는 HTML 문서만 받아오며 자바스크립트를 실행하지 않습니다. 반면 다음과 같은 경우는 셀레니움이 필요합니다:
- 콘텐츠가 JS로 렌더링됨 (ex. SPA 사이트)
- 버튼 클릭 후 데이터 로딩
- 무한 스크롤
- 로그인 후 콘텐츠 표시
Selenium은 실제 웹 브라우저를 자동화하여 페이지를 로딩하고 조작할 수 있어, 자바스크립트 렌더링도 그대로 처리할 수 있습니다.
셀레니움 설치 및 기본 셋업
pip install selenium
그리고 웹드라이버도 설치해야 합니다. 크롬 브라우저를 사용할 경우 ChromeDriver를 다운로드하여 파이썬 스크립트와 같은 폴더에 위치시키세요.
셀레니움 기본 사용 예제
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 브라우저 실행
driver = webdriver.Chrome()
# 웹페이지 접속
driver.get("https://example.com")
# 페이지 로딩 대기
time.sleep(2)
# 특정 요소 찾기
titles = driver.find_elements(By.CLASS_NAME, "news-title")
for title in titles:
print(title.text)
# 브라우저 종료
driver.quit()
동적 요소 클릭, 스크롤 예제
# 버튼 클릭
button = driver.find_element(By.ID, "loadMoreBtn")
button.click()
# 스크롤 내리기
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
셀레니움 활용 예시
- 쇼핑몰 가격 수집: 페이지 진입 → 버튼 클릭 → 가격 정보 크롤링
- 무한 스크롤 뉴스: 일정 간격으로 스크롤 → 새로 뜬 기사 크롤링
- 로그인 후 크롤링: 로그인 폼 자동 입력 → 로그인 → 내부 페이지 데이터 수집
셀레니움 주요 메서드 정리
메서드 | 설명 |
---|---|
get(url) |
해당 URL 페이지로 이동 |
find_element() |
첫 번째 요소 찾기 |
find_elements() |
모든 일치 요소 리스트로 반환 |
click() |
클릭 동작 실행 |
send_keys() |
텍스트 입력 |
execute_script() |
자바스크립트 실행 |
quit() |
브라우저 종료 |
셀레니움의 단점과 대안
- 실행 속도가 느립니다. 실제 브라우저를 띄우므로 처리 시간이 길어집니다.
- 크롬드라이버 버전 불일치 문제 발생 가능
- 무거운 작업은
Scrapy + Splash
또는Playwright
로 대체 고려
하지만 초보자에게는 시각적으로 확인할 수 있고, 코드도 직관적이라 매우 좋습니다. 또한 로그인/스크롤/클릭 자동화까지 폭넓게 지원하는 점에서 강력한 도구입니다.
크롤링 시 유의사항
robots.txt
정책 확인 필수- 너무 자주 요청하지 않도록
time.sleep()
으로 간격 조절 - 데이터 사용 목적이 상업적이라면 법적 이슈 확인
- 로그인/쿠키 관련 사이트는 세션 유지 기술과 헤더 조작이 필요할 수 있음
정리하며
Selenium은 웹사이트가 자바스크립트를 통해 데이터를 렌더링하는 경우 가장 유용한 크롤링 도구입니다. 클릭, 입력, 스크롤 등 브라우저의 모든 동작을 자동화할 수 있어 실제 브라우저처럼 데이터를 처리할 수 있습니다.
파이썬 웹크롤링을 처음 시작하는 분이라면 BeautifulSoup과 함께 셀레니움을 꼭 익혀보세요. 실전 프로젝트에서 활용도가 매우 높은 도구입니다. 다음에는 셀레니움을 이용한 자동 로그인 및 크롤링 자동화 예제도 소개해드릴게요.