Summary
- Selenium은 웹 브라우저를 제어해 페이지를 불러오고 JavaScript를 실행하며, BeautifulSoup은 HTML·XML을 파싱해 정보를 추출한다
find_element에By셀렉터를 조합해 요소를 선택하고, 입력·클릭 등을 수행한다- 파일 다운로드 경로는
ChromeOptions로 지정한다
기본 세팅
패키지
- BeautifulSoup: 페이지의 HTML·XML 문서를 파싱하고 정보를 추출한다
- Selenium: 웹 브라우저를 제어해 페이지를 불러오고 JavaScript를 실행해 데이터에 접근한다
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import ByChromedriver 설치
크롬 버전을 먼저 확인한 뒤, 해당 버전에 맞는 driver를 설치한다.

그림. 크롬 버전 확인
사용법
접근
제어창을 열고 URL에 접속한 뒤 제어창을 종료한다. set_window_position()으로 창 위치를, maximize_window()로 창을 최대화할 수 있다.
driver = webdriver.Chrome()
driver.set_window_position(0, 0)
driver.maximize_window()
url = "https://www.industryland.or.kr/il/danji/list"
driver.get(url)
driver.close()다운로드 경로 설정
크롤링으로 엑셀 등 파일을 다운로드할 때는 ChromeOptions()로 저장 경로를 지정하고, options 매개변수로 제어창을 생성한다.
path = '경로'
chrome_options = webdriver.ChromeOptions()
prefs = {'download.default_directory': path}
chrome_options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(options=chrome_options)요소 선택 (element 문법)
find_element(단일)·find_elements(복수)에 By 셀렉터를 조합해 요소를 선택한다.
| 셀렉터 | 설명 | 예시 |
|---|---|---|
By.ID | 태그의 id 값으로 추출 | |
By.NAME | 태그의 name 값으로 추출 | |
By.XPATH | 태그의 경로로 추출 | //*[@id="root"]/main/table |
By.LINK_TEXT | 링크 텍스트로 추출 | |
By.TAG_NAME | 태그 이름으로 추출 | |
By.CLASS_NAME | 태그의 클래스명으로 추출 | |
By.CSS_SELECTOR | css 선택자로 추출 | #root > main > table |
아래는 네이버 사이트의 소스 정보 예시다.

그림. 네이버 사이트의 소스 정보
입력
driver.find_element(By.ID, "search_danji_nm").send_keys(name)클릭
driver.find_element(By.CSS_SELECTOR, '#root > main > div.search-box > button').click()
driver.find_element(By.XPATH, f"//td[@class='text-al-left' and text()='{name}']").click()Reference