JavaScript로 동적으로 그려지는 페이지는 requests + BeautifulSoup으론 못 잡습니다.
이때 「실제 브라우저를 자동 조작하는」 도구가 Selenium입니다.
크롬·파이어폭스 등 진짜 브라우저를 띄워 클릭·입력·스크롤을 시뮬레이션합니다.
설치·기본.
pip install selenium.
별도로 ChromeDriver 같은 브라우저 드라이버 필요(요즘은 selenium 4의 자동 관리로 대부분 자동).
from selenium import webdriver.
driver = webdriver.Chrome().
driver.get("https://example.com").
html = driver.page_source.
요소 찾기.
from selenium.webdriver.common.by import By.
driver.find_element(By.CSS_SELECTOR, "button.submit") — 첫 매칭.
find_elements (복수형) — 모든 매칭.
By.ID·By.XPATH·By.CLASS_NAME 등 다양한 방식.
조작.
element.click() — 클릭.
element.send_keys("검색어") — 텍스트 입력.
element.text — 텍스트 추출.
element.get_attribute("href") — 속성.
driver.execute_script("window.scrollTo(0, 1000)") — 임의 JavaScript 실행.
기다림이 핵심.
동적 페이지는 요소가 즉시 안 나타납니다.
WebDriverWait + expected_conditions로 「요소가 나타날 때까지 최대 N초 대기」가 표준 패턴.
time.sleep으로 무작정 기다리면 느리고 불안정합니다.
한 줄 요약
Selenium은 실제 브라우저를 자동 조작합니다.
JavaScript 동적 페이지를 잡을 수 있고, find_element + click·send_keys로 조작합니다.
WebDriverWait로 동기화 처리 필수입니다.
더 알아볼 것
- headless 모드 — 화면 안 띄우고 실행
- WebDriverWait 사용법
- Playwright와의 비교