플그래밍/파이써언

[파이썬 & 크롤링] Selenium "Select" - 드롭다운 옵션 선택 법

훗티v 2023. 8. 4. 17:36
728x90
반응형

데이타 크롤링을 하다보면 아래와 같은 드롭다운 메뉴를 선택해야하는 상황에 마주칩니다

오늘은 파이썬 selenium으로 드롭다운 목록에서 원하는 옵션을 선택해볼께요

 

Ctrl + Shift + C를 눌러 해당 요소를 자세히 확인해볼께요

해당 태그 <select>에는 여러 가지 옵션이 있는 것을 확인할 수 있어요

부산은 value 값이 0020 이네요

<select name="dptRsStnCd" id="dptRsStnCd" class="dropDownNoJqueryUi" style="color: #6f135e;">
	<option value="" selected="">출발역</option>
	<option value="0551">수서</option>
	<option value="0552">동탄</option>
	<option value="0553">평택지제</option>
	<option value="0502">천안아산</option>
	<option value="0297">오송</option>
	<option value="0010">대전</option>
	<option value="0507">김천(구미)</option>
	<option value="0506">서대구</option>
	<option value="0015">동대구</option>
	<option value="0508">신경주</option>
	<option value="0509">울산(통도사)</option>
	<option value="0020">부산</option>
	<option value="0514">공주</option>
	<option value="0030">익산</option>
	<option value="0033">정읍</option>
	<option value="0036">광주송정</option>
	<option value="0037">나주</option>
	<option value="0041">목포</option>
</select>

 

name을 통해서 해당 요소에 접근하면되겠네요 (name은 "dptRsStnCd")

간단하게 파이썬 selenium 코드를 작성해볼께요

저희는 <option> 태그의 value 값을 통해서 부산을 선택해볼께요

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options

option = Options()
# option.add_argument('--headless')
option.add_argument('--disable-gpu')
option.add_argument('--window-size=1920,1080')
option.add_argument('--start-maximized')

service = Service()
# service.creation_flags = CREATE_NO_WINDOW
driver = webdriver.Chrome(service=service, options=option)
driver.get('https://etk.srail.kr/main.do')

# 팝업처리
main_window_handle = driver.current_window_handle
WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2))

for handle in driver.window_handles:
    if handle != main_window_handle:
        popup_window_handle = handle
        driver.switch_to.window(popup_window_handle)
        break

driver.close()
driver.switch_to.window(main_window_handle)

# 드롭다운
select_element = driver.find_element(By.NAME, 'dptRsStnCd')
select = Select(select_element)
select.select_by_value("0020")

 

실행해보면

SRT 사이트 접속 시 뜨는 팝업을 닫아주고 드롭박스를 찾아 value값이 0020인 부산을 잘 선택해주네요

 

 

 

 

 

 

반응형