[Python] 나도코딩 웹 스크래핑편 - (12) 셀레니움2

Updated:

유튜브 나도코딩 웹 스크래핑 무료 강의를 통해 학습한 내용을 정리해서 올리고 있습니다.

실습과정에서 필요에 따라 일부 강의 내용의 누락 및 추가, 수정사항이 있습니다.

퀴즈의 경우, 유튜브 풀이와 상이할 수 있습니다.


네이버 항공권

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

browser = webdriver.Chrome("./chromedriver.exe")
browser.maximize_window() # 창 최대화

url = "https://flight.naver.com/flights/"

browser.get(url)

# 가는 날 선택 클릭
browser.find_element_by_link_text("가는날 선택").click()

# 이번달 27, 다음달 28일 선택
# element 27이 이번달, 다음달 2개 등이므로 index 로 구분하였기에 element"s" s 붙임
browser.find_elements_by_link_text("27")[0].click()
browser.find_elements_by_link_text("28")[1].click()

# 제주도 선택, 항공권 검색 클릭
browser.find_element_by_xpath("//*[@id='recommendationList']/ul/li[1]/div/span").click() # 제주도 선택
browser.find_element_by_xpath("//*[@id='searchArea']/a").click() # 항공권검색 link_text 대신 xpath 사용

# 10초를 기다리는데 뒤 xpath 가 실행될 때 까지, LINK_TEXT 등도 가능함
try:
    # 첫 번째 결과 출력
    elem = WebDriverWait(browser,10).until(EC.presence_of_element_located( (By.XPATH, "//*[@id='content']/div[2]/div/div[4]/ul/li[1]") ))
    print(elem.text)
finally:
    browser.quit()
에어서울
출발지
GMP
06:00
도착지
CJU
06:55
총 소요시간
55분
할인석
편도 48,100원
편도 47,630원 (KB국민카드 결제시)
성인이벤트혜택
  • 이번엔 네이버 항공권 홈페이지에서 직접 원하는 날짜를 클릭하고 검색하여 항공권 정보를 출력하였다.

  • 여기서 항공권 검색을 클릭하면 잠깐의 로딩 후 검색 결과 홈페이지가 나타난다.

  • 따라서 로딩 시간을 기다려 주기 위해 WebDriverWait()을 사용하여 10초를 기다리게 설정하였다.

  • 그런데 10초 전에 로딩이 완료 될 수 있으므로 until(), expected_conditions 모듈, presence_of_element_located를 사용한다.

  • presence_of_element_located는 지정한 element가 있는지 확인한다.

  • 즉, 지정한 element가 존재하거나 10초가 지날 때까지 기다리는 것이다.

Leave a comment