크롤링 중 드롭다운 옵션을 추출해야할 경우에 대해서 알아볼께요
SRT 웹사이트 메인페이지에는 출발역을 선택하는 드롭다운이 있습니다
해당 드롭다운에서 선택가능한 모든 옵션을 추출해볼께요
먼저 요소를 직접 확인해서 어떤 옵션이 있는지 볼께요
<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>
총 18개의 출발역 옵션이 존재합니다
간단하게 파이썬 코드를 작성해볼께요
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)
all_options = select.options
print(f"[모든 옵션]")
for option in all_options:
print(option.text, end=" ")
valid_options = [option for option in select.options if option.get_attribute("value") != ""]
print(f"\n\n[value 값을 가진 모든 옵션]")
for option in valid_options:
print(option.text, end=" ")
value_options = [option for option in select.options if option.get_attribute("value") != ""]
print(f"\n\n[value 값을 가진 모든 옵션의 value 추출]")
for option in value_options:
value_attribute = option.get_attribute("value")
print(value_attribute, end=" ")
driver.quit()
총 19개의 옵션이 추출되고 value값을 가진 옵션만 추출할 경우 18개가 추출됩니다
value값 자체가 필요한 경우 아래와 같이 value값을 추출할 수도 있겠네요
728x90
'플그래밍 > 파이써언' 카테고리의 다른 글
[파이썬 & 크롤링] Selenium - 팝업 닫는 법 (0) | 2023.08.04 |
---|---|
[파이썬 & 크롤링] Selenium - iframe 내부 접근 법 (0) | 2023.08.04 |
[파이썬 & 크롤링] Selenium "Select" - 드롭다운 옵션 선택 법 (1) | 2023.08.04 |
[파이썬 & 크롤링] Naver 증권 리서치 리포트 모아보기 (3) | 2023.07.29 |
[파이썬 & 크롤링] 시드물 제품 검색 및 리뷰 추출 프로그램 (0) | 2023.07.28 |