반응형
반응형
반응형

[셀레니움 응용] 네이버 항공권 검색 3편 가격 검색

파이썬 셀레니움을 사용하여 네이버 항공권 정보를 얻어오는 방법을 소개합니다.




목차:




1. 항공권 정보 파싱하기

1, 2편을 수행하여 공항, 날짜를 선택하였습니다. 항공권 검색을 통해 해당하는 항공권의 검색을 파싱해보겠습니다.

  • 홈페이지의 정보를 파싱하기 위해 Beautiful Soup4 (bs4) 패키지를 사용합니다. 해당 패키지의 사용법은 여기를 클릭하여 확인할 수 있습니다.

  • 자세한 설명은 주석을 통해 대신합니다.


# 이 프로젝트에서는 왕복 항공권을 기준으로 작성되었습니다.
# selenium Ver : 3.14.1
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 웹드라이버 열기 (네이버 항공권)
driver = webdriver.Chrome()
driver.get("https://flight.naver.com/")
time.sleep(1)

# 입력칸에 출발지, 목적지를 입력하고 목록 중 첫번 째를 선택하는 함수
def airway(parts):
    for part in parts:
        # Xpath를 분석 > 출발지:button[1], 도착지:button[2]인 것을 반복문을 통해 간소화 list Index : 0, 1
        index = parts.index(part)
        driver.find_element_by_xpath(f'//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[1]/button[{int(index)+1}]').click()
        driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[1]/div/input').send_keys(part)
        time.sleep(0.1)
        driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[2]/section/div').click()
        time.sleep(0.5)
# 가는날, 오는날 선택하는 함수
def select_dates(month, week, day):
    print(f"week 번호 : {week}   요일 번호 : {day}")
    driver.find_element_by_xpath(f'//*[@id="__next"]/div/div[1]/div[9]/div[2]/div[1]/div[2]/div/div[{month}]/table/tbody/tr[{week}]/td[{day}]/button/b').click()
    time.sleep(0.1)

# 출발, 도착지 [김포, 제주]
ports = {'김포':'GMP','인천':'ICN','제주':'CJU','김해':'PUS','대구':'TAE'}
points = [ports['김포'],ports['제주']]
print(points)
airway(points)

# 가는 날 클릭
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[2]/button[1]').click()
time.sleep(1)

# 이번 달
month = 2
# 3주 차 // 2주 차 = 2 // 현재에 맞게 수정하세요.
week = 3
# 요일 선택
day_go = '토요일'
# 체류 기간
day_n_nights = 4

# 검색 할 요일 선택
days = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일']
day = days.index(day_go)+1      # 선택한 요일
select_dates(month, week, day)  # 출발날짜 : select_dates 함수에 월, 주차, 요일 입력 후 클릭
day = day+day_n_nights-1        # 도착날짜 계산 > +체류 기간
# 체류기간에 따라 바뀌는 주(week) 계산
if day > 7:
    week+=day//7
    day = day%7
try:
    # 만약 체류 기간이 2개의 달(11월~12월)에 걸쳐있을 경우
    select_dates(month, week, day)
except:
    if week >= 4:
        month += 1
        week = 1
        select_dates(month, week, day)

# 항공권 검색 버튼 클릭
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[4]/div/div/button').click()

delay = 10
for i in range(delay):
    time.sleep(1)
    print(f'{delay-i}초 후 실행됩니다.')

from bs4 import BeautifulSoup as bs

# 모든 항공권 정보를 얻기 위해 가장 아래까지 스크롤
for i in range(10):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
    time.sleep(0.2)

# 크롬드라이버의 현재 페이지의 url 얻기
page_url = driver.page_source
# 현재 url 주소의 html 데이터를 파싱
soup = bs(page_url, "html.parser")
flights = soup.find_all(class_='result')

# 항공권 정보가 리스트로 저장되어 있습니다.
for flight in flights:
    print(flight.text)

print(f'총 {len(flights)}개의 항공권 정보를 불러왔습니다.')

항공권 검색 시 로딩 시간은 time.sleep(10)을 통해 10초 대기합니다. 여러가지 상황에 따라 달라질 수 있으므로 시간을 직접 설정하세요.




결과창 펼쳐보기 (21년 11월 05일 기준)
['GMP', 'CJU']
10초 후 실행됩니다.
9초 후 실행됩니다.
8초 후 실행됩니다.
7초 후 실행됩니다.
6초 후 실행됩니다.
5초 후 실행됩니다.
4초 후 실행됩니다.
3초 후 실행됩니다.
2초 후 실행됩니다.
1초 후 실행됩니다.
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:05GMP07:15CJU01시간 10분할인석편도 113,300원~네이버페이 결제시 1%+1,500원 적립편도 110,667원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립06:05GMP07:10CJU01시간 05분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:05GMP07:15CJU01시간 10분일반석편도 117,500원~네이버페이 결제시 1%+1,500원 적립편도 114,825원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:05GMP07:10CJU01시간 05분할인석편도 123,500원~네이버페이 결제시 1%+1,500원 적립편도 121,755원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:05GMP07:10CJU01시간 05분일반석편도 130,500원~네이버페이 결제시 1%+1,500원 적립편도 127,695원~
에어서울06:10GMP07:10CJU01시간 00분할인석편도 109,400원~KB국민카드 결제시 1% 청구할인편도 109,310원~
에어서울06:10GMP07:10CJU01시간 00분일반석편도 116,500원~KB국민카드 결제시 1% 청구할인편도 115,350원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:10GMP07:20CJU01시간 10분일반석편도 129,500원~네이버페이 결제시 1%+1,500원 적립편도 127,695원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:10GMP07:20CJU01시간 10분비즈니스석편도 187,500원~네이버페이 결제시 1%+1,500원 적립편도 184,125원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:20GMP07:30CJU01시간 10분할인석편도 123,500원~네이버페이 결제시 1%+1,500원 적립편도 121,755원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:20GMP07:30CJU01시간 10분일반석편도 130,500원~네이버페이 결제시 1%+1,500원 적립편도 127,695원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립06:30GMP07:40CJU01시간 10분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:30GMP07:45CJU01시간 15분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 114,825원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:35GMP07:50CJU01시간 15분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 114,825원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:40GMP07:50CJU01시간 10분일반석편도 115,400원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
에어서울06:45GMP07:45CJU01시간 00분할인석편도 109,400원~KB국민카드 결제시 1% 청구할인편도 109,310원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립06:45GMP07:55CJU01시간 10분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
에어서울06:45GMP07:45CJU01시간 00분일반석편도 116,500원~KB국민카드 결제시 1% 청구할인편도 115,350원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립06:50GMP08:00CJU01시간 10분일반석편도 129,500원~네이버페이 결제시 1%+1,500원 적립편도 127,695원~
에어부산06:55GMP08:05CJU01시간 10분일반석편도 115,500원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립07:00GMP08:10CJU01시간 10분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립07:00GMP08:10CJU01시간 10분비즈니스석편도 168,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 165,330원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립07:10GMP08:20CJU01시간 10분일반석편도 129,500원~네이버페이 결제시 1%+1,500원 적립편도 127,695원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립07:10GMP08:20CJU01시간 10분비즈니스석편도 187,500원~네이버페이 결제시 1%+1,500원 적립편도 184,125원~
에어부산07:20GMP08:30CJU01시간 10분일반석편도 115,500원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립07:20GMP08:30CJU01시간 10분비즈니스석편도 186,500원~네이버페이 결제시 1%+1,500원 적립편도 184,125원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립07:30GMP08:40CJU01시간 10분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립07:35GMP08:45CJU01시간 10분비즈니스석편도 186,500원~네이버페이 결제시 1%+1,500원 적립편도 184,125원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립09:20GMP10:30CJU01시간 10분비즈니스석편도 186,500원~네이버페이 결제시 1%+1,500원 적립편도 184,125원~
에어서울10:55GMP12:10CJU01시간 15분일반석편도 115,500원~KB국민카드 결제시 1% 청구할인편도 115,350원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립10:55GMP12:05CJU01시간 10분비즈니스석편도 186,500원~네이버페이 결제시 1%+1,500원 적립편도 184,125원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립11:00GMP12:10CJU01시간 10분비즈니스석편도 186,500원~네이버페이 결제시 1%+1,500원 적립편도 184,125원~
대한항공11:10GMP12:20CJU01시간 10분일반석편도 126,500원~KB국민카드 결제시 1% 청구할인편도 126,240원~
에어부산11:20GMP12:30CJU01시간 10분일반석편도 115,500원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립11:35GMP12:45CJU01시간 10분할인석편도 123,500원~네이버페이 결제시 1%+1,500원 적립편도 121,755원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립11:35GMP12:45CJU01시간 10분일반석편도 130,500원~네이버페이 결제시 1%+1,500원 적립편도 127,695원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립11:35GMP12:45CJU01시간 10분비즈니스석편도 187,500원~네이버페이 결제시 1%+1,500원 적립편도 184,125원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립11:45GMP12:55CJU01시간 10분일반석편도 115,400원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
대한항공12:05GMP13:15CJU01시간 10분일반석편도 126,500원~KB국민카드 결제시 1% 청구할인편도 126,240원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립12:15GMP13:25CJU01시간 10분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립12:20GMP13:30CJU01시간 10분일반석편도 109,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립12:20GMP13:30CJU01시간 10분할인석편도 113,300원~네이버페이 결제시 1%+1,500원 적립편도 110,667원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립12:20GMP13:30CJU01시간 10분일반석편도 117,500원~네이버페이 결제시 1%+1,500원 적립편도 114,825원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립12:25GMP13:40CJU01시간 15분할인석편도 111,300원~네이버페이 결제시 1%+1,500원 적립편도 108,687원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립12:25GMP13:40CJU01시간 15분일반석편도 117,500원~네이버페이 결제시 1%+1,500원 적립편도 114,825원~
대한항공12:50GMP13:55CJU01시간 05분할인석편도 115,500원~KB국민카드 결제시 1% 청구할인편도 115,350원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립12:50GMP14:00CJU01시간 10분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
대한항공12:50GMP13:55CJU01시간 05분일반석편도 127,500원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립12:55GMP14:05CJU01시간 10분일반석편도 115,400원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
대한항공13:00GMP14:15CJU01시간 15분일반석편도 126,500원~KB국민카드 결제시 1% 청구할인편도 126,240원~
대한항공13:00GMP14:15CJU01시간 15분비즈니스석편도 187,500원~KB국민카드 결제시 1% 청구할인편도 185,640원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:05GMP14:15CJU01시간 10분일반석편도 115,400원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
에어부산13:10GMP14:20CJU01시간 10분일반석편도 115,500원~
대한항공13:10GMP14:20CJU01시간 10분일반석편도 126,500원~KB국민카드 결제시 1% 청구할인편도 126,240원~
대한항공13:10GMP14:20CJU01시간 10분비즈니스석편도 187,500원~KB국민카드 결제시 1% 청구할인편도 185,640원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:20GMP14:25CJU01시간 05분일반석편도 109,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:25GMP14:35CJU01시간 10분일반석편도 109,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:30GMP14:45CJU01시간 15분할인석편도 97,800원~네이버페이 결제시 1%+1,500원 적립편도 95,322원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:30GMP14:45CJU01시간 15분일반석편도 117,500원~네이버페이 결제시 1%+1,500원 적립편도 114,825원~
대한항공13:30GMP14:40CJU01시간 10분일반석편도 126,500원~KB국민카드 결제시 1% 청구할인편도 126,240원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립13:40GMP14:50CJU01시간 10분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:45GMP14:45CJU01시간 00분일반석편도 109,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:45GMP14:45CJU01시간 00분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:50GMP15:00CJU01시간 10분할인석편도 104,500원~네이버페이 결제시 1%+1,500원 적립편도 102,945원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:50GMP15:00CJU01시간 10분일반석편도 110,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:55GMP15:10CJU01시간 15분일반석편도 109,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
대한항공13:55GMP15:05CJU01시간 10분일반석편도 126,500원~KB국민카드 결제시 1% 청구할인편도 126,240원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립13:55GMP15:10CJU01시간 15분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:05GMP15:15CJU01시간 10분일반석편도 109,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:05GMP15:15CJU01시간 10분일반석편도 115,400원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:05GMP15:15CJU01시간 10분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:20GMP15:35CJU01시간 15분할인석편도 97,800원~네이버페이 결제시 1%+1,500원 적립편도 95,322원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:20GMP15:30CJU01시간 10분일반석편도 115,400원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:20GMP15:35CJU01시간 15분일반석편도 117,500원~네이버페이 결제시 1%+1,500원 적립편도 114,825원~
대한항공14:25GMP15:35CJU01시간 10분할인석편도 115,500원~KB국민카드 결제시 1% 청구할인편도 115,350원~
대한항공14:25GMP15:35CJU01시간 10분일반석편도 127,500원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립14:40GMP15:50CJU01시간 10분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:45GMP15:55CJU01시간 10분일반석편도 109,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:45GMP15:55CJU01시간 10분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:50GMP16:00CJU01시간 10분할인석편도 93,300원~네이버페이 결제시 1%+1,500원 적립편도 91,956원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:50GMP16:00CJU01시간 10분일반석편도 109,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:50GMP16:00CJU01시간 10분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립14:50GMP16:00CJU01시간 10분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
대한항공14:55GMP16:05CJU01시간 10분일반석편도 126,500원~KB국민카드 결제시 1% 청구할인편도 126,240원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:00GMP16:10CJU01시간 10분할인석편도 94,500원~네이버페이 결제시 1%+1,500원 적립편도 93,045원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:00GMP16:10CJU01시간 10분일반석편도 110,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립15:00GMP16:10CJU01시간 10분일반석편도 116,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립15:00GMP16:10CJU01시간 10분비즈니스석편도 142,500원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 140,090원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:00GMP16:10CJU01시간 10분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
에어부산15:05GMP16:15CJU01시간 10분할인석편도 92,120원~
에어부산15:05GMP16:15CJU01시간 10분일반석편도 116,500원~
대한항공15:10GMP16:20CJU01시간 10분비즈니스석편도 164,500원~KB국민카드 결제시 1% 청구할인편도 163,860원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:20GMP16:30CJU01시간 10분할인석편도 93,300원~네이버페이 결제시 1%+1,500원 적립편도 91,956원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:20GMP16:30CJU01시간 10분할인석편도 94,500원~네이버페이 결제시 1%+1,500원 적립편도 93,045원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:20GMP16:30CJU01시간 10분일반석편도 110,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:20GMP16:30CJU01시간 10분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:30GMP16:40CJU01시간 10분할인석편도 94,500원~네이버페이 결제시 1%+1,500원 적립편도 93,045원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:30GMP16:40CJU01시간 10분일반석편도 110,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립15:30GMP16:40CJU01시간 10분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립15:40GMP16:50CJU01시간 10분할인석편도 93,400원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 92,470원~
대한항공15:40GMP16:50CJU01시간 10분일반석편도 104,500원~KB국민카드 결제시 1% 청구할인편도 104,460원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립15:40GMP16:50CJU01시간 10분일반석편도 117,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
대한항공15:40GMP16:50CJU01시간 10분비즈니스석편도 165,500원~KB국민카드 결제시 1% 청구할인편도 163,860원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립16:05GMP17:15CJU01시간 10분할인석편도 86,400원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 85,540원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립16:05GMP17:15CJU01시간 10분일반석편도 117,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립16:10GMP17:20CJU01시간 10분할인석편도 80,400원~네이버페이 결제시 1%+1,500원 적립편도 78,096원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립16:10GMP17:20CJU01시간 10분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립16:30GMP17:40CJU01시간 10분할인석편도 79,400원~네이버페이 결제시 1%+1,500원 적립편도 78,096원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립16:30GMP17:40CJU01시간 10분일반석편도 90,500원~네이버페이 결제시 1%+1,500원 적립편도 88,095원~
대한항공16:40GMP17:50CJU01시간 10분일반석편도 104,500원~KB국민카드 결제시 1% 청구할인편도 104,460원~
대한항공16:40GMP17:50CJU01시간 10분비즈니스석편도 165,500원~KB국민카드 결제시 1% 청구할인편도 163,860원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립16:55GMP18:05CJU01시간 10분할인석편도 78,400원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 77,620원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립16:55GMP18:05CJU01시간 10분일반석편도 117,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
대한항공17:05GMP18:15CJU01시간 10분일반석편도 104,500원~KB국민카드 결제시 1% 청구할인편도 104,460원~
대한항공17:15GMP18:25CJU01시간 10분일반석편도 104,500원~KB국민카드 결제시 1% 청구할인편도 104,460원~
대한항공17:15GMP18:25CJU01시간 10분비즈니스석편도 165,500원~KB국민카드 결제시 1% 청구할인편도 163,860원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립17:25GMP18:35CJU01시간 10분할인석편도 80,400원~네이버페이 결제시 1%+1,500원 적립편도 78,096원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립17:25GMP18:35CJU01시간 10분할인석편도 89,500원~네이버페이 결제시 1%+1,500원 적립편도 88,095원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립17:25GMP18:35CJU01시간 10분일반석편도 110,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립17:25GMP18:35CJU01시간 10분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
에어부산17:30GMP18:40CJU01시간 10분할인석편도 82,580원~
에어부산17:30GMP18:40CJU01시간 10분일반석편도 116,500원~
대한항공17:35GMP18:45CJU01시간 10분일반석편도 104,500원~KB국민카드 결제시 1% 청구할인편도 104,460원~
에어부산17:45GMP18:55CJU01시간 10분할인석편도 82,580원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립17:45GMP19:00CJU01시간 15분일반석편도 89,500원~네이버페이 결제시 1%+1,500원 적립편도 88,095원~
에어부산17:45GMP18:55CJU01시간 10분일반석편도 116,500원~
에어서울17:50GMP19:10CJU01시간 20분할인석편도 77,400원~
에어서울17:50GMP19:10CJU01시간 20분일반석편도 90,400원~KB국민카드 결제시 1% 청구할인편도 89,510원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:05GMP19:15CJU01시간 10분할인석편도 87,300원~네이버페이 결제시 1%+1,500원 적립편도 86,016원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:05GMP19:15CJU01시간 10분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
에어부산18:10GMP19:20CJU01시간 10분할인석편도 82,580원~
에어부산18:10GMP19:20CJU01시간 10분일반석편도 116,500원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:15GMP19:30CJU01시간 15분일반석편도 89,500원~네이버페이 결제시 1%+1,500원 적립편도 88,095원~
대한항공18:30GMP19:40CJU01시간 10분일반석편도 104,500원~KB국민카드 결제시 1% 청구할인편도 104,460원~
대한항공18:30GMP19:40CJU01시간 10분비즈니스석편도 165,500원~KB국민카드 결제시 1% 청구할인편도 163,860원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:35GMP19:45CJU01시간 10분할인석편도 89,500원~네이버페이 결제시 1%+1,500원 적립편도 88,095원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:35GMP19:45CJU01시간 10분일반석편도 110,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:35GMP19:45CJU01시간 10분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:45GMP19:55CJU01시간 10분할인석편도 80,400원~네이버페이 결제시 1%+1,500원 적립편도 78,096원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:45GMP19:55CJU01시간 10분일반석편도 109,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:45GMP19:55CJU01시간 10분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립18:45GMP19:55CJU01시간 10분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
대한항공18:50GMP20:00CJU01시간 10분할인석편도 76,500원~
대한항공18:50GMP20:00CJU01시간 10분비즈니스석편도 165,500원~KB국민카드 결제시 1% 청구할인편도 163,860원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립19:05GMP20:15CJU01시간 10분할인석편도 75,400원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 74,650원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립19:05GMP20:15CJU01시간 10분할인석편도 87,300원~네이버페이 결제시 1%+1,500원 적립편도 86,016원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립19:05GMP20:15CJU01시간 10분비즈니스석편도 97,400원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 95,440원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립19:05GMP20:15CJU01시간 10분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립19:05GMP20:15CJU01시간 10분일반석편도 117,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립19:15GMP20:20CJU01시간 05분할인석편도 78,400원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 77,620원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립19:15GMP20:25CJU01시간 10분할인석편도 79,500원~네이버페이 결제시 1%+1,500원 적립편도 78,195원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립19:15GMP20:25CJU01시간 10분일반석편도 110,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립19:15GMP20:20CJU01시간 05분일반석편도 117,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립19:15GMP20:25CJU01시간 10분비즈니스석편도 165,500원~네이버페이 결제시 1%+1,500원 적립편도 162,345원~
대한항공19:20GMP20:30CJU01시간 10분할인석편도 76,500원~
대한항공19:20GMP20:30CJU01시간 10분비즈니스석편도 165,500원~KB국민카드 결제시 1% 청구할인편도 163,860원~
에어서울19:25GMP20:45CJU01시간 20분할인석편도 83,400원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립19:25GMP20:35CJU01시간 10분할인석편도 87,300원~네이버페이 결제시 1%+1,500원 적립편도 86,016원~
에어서울19:25GMP20:45CJU01시간 20분일반석편도 90,400원~KB국민카드 결제시 1% 청구할인편도 89,510원~
티웨이항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립19:25GMP20:35CJU01시간 10분일반석편도 116,500원~네이버페이 결제시 1%+1,500원 적립편도 113,835원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립19:30GMP20:40CJU01시간 10분할인석편도 86,400원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 85,540원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립19:30GMP20:40CJU01시간 10분일반석편도 117,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:10GMP21:20CJU01시간 10분할인석편도 84,500원~네이버페이 결제시 1%+1,500원 적립편도 83,145원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:10GMP21:20CJU01시간 10분일반석편도 110,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:25GMP21:35CJU01시간 10분할인석편도 64,800원~네이버페이 결제시 1%+1,500원 적립편도 62,652원~
대한항공20:25GMP21:35CJU01시간 10분할인석편도 85,500원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:25GMP21:35CJU01시간 10분일반석편도 90,500원~네이버페이 결제시 1%+1,500원 적립편도 88,095원~
대한항공20:25GMP21:35CJU01시간 10분비즈니스석편도 165,500원~KB국민카드 결제시 1% 청구할인편도 163,860원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:30GMP21:45CJU01시간 15분할인석편도 64,800원~네이버페이 결제시 1%+1,500원 적립편도 62,652원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:30GMP21:45CJU01시간 15분일반석편도 90,500원~네이버페이 결제시 1%+1,500원 적립편도 88,095원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:40GMP21:50CJU01시간 10분할인석편도 64,800원~네이버페이 결제시 1%+1,500원 적립편도 62,652원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:40GMP21:50CJU01시간 10분일반석편도 90,500원~네이버페이 결제시 1%+1,500원 적립편도 88,095원~
대한항공20:45GMP21:55CJU01시간 10분할인석편도 76,500원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립20:50GMP22:00CJU01시간 10분할인석편도 68,400원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 67,720원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:50GMP22:00CJU01시간 10분할인석편도 74,500원~네이버페이 결제시 1%+1,500원 적립편도 73,245원~
아시아나항공1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립20:50GMP22:00CJU01시간 10분일반석편도 110,500원~네이버페이 결제시 1%+1,500원 적립편도 107,895원~
제주항공이벤트혜택KB국민카드 결제시 1% 청구할인 + 1,000원 적립20:50GMP22:00CJU01시간 10분일반석편도 117,000원~KB국민카드 결제시 1% 청구할인 + 1,000원 적립편도 114,840원~
대한항공21:05GMP22:15CJU01시간 10분할인석편도 66,500원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립21:05GMP22:15CJU01시간 10분할인석편도 70,600원~네이버페이 결제시 1%+1,500원 적립편도 68,394원~
진에어1%적립이벤트혜택네이버페이 결제시 1%+1,500원 적립21:05GMP22:15CJU01시간 10분일반석편도 90,500원~네이버페이 결제시 1%+1,500원 적립편도 88,095원~
총 180개의 항공권 정보를 불러왔습니다.

Process finished with exit code 0



2. 결과 데이터 가공하기

위와 같은 결과 데이터 중 필요한 정보만 얻기 위해 가공해야 합니다.
문자열을 가공하는 방법을 확인하려면 여기를 클릭하여 확인할 수 있습니다.




관련글 모아보기



python3.9 | camp-lee@naver.com


python3.9 | camp-lee@naver.com


python3.9 | camp-lee@naver.com

반응형
반응형

[셀레니움 응용] 네이버 항공권 검색 2편 달력 선택

파이썬 셀레니움을 사용하여 네이버 항공권 정보를 얻어오는 방법을 소개합니다.




목차:




1. 달력 Xpath 분석

유동적으로 날짜(월, 일)를 선택하기 위해 달력의 Html, Xpath를 분석합니다.
선택 값에 따라 변하는 규칙(패턴)을 파악하여 날짜를 선택할 수 있도록 합니다.


  1. 달력 1주 차의 요일 Xpath를 분석합니다.
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[1]/td[ 1 ]/button/b' #일
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[1]/td[ 2 ]/button/b' #월
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[1]/td[ 3 ]/button/b' #화
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[1]/td[ 4 ]/button/b' #수
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[1]/td[ 5 ]/button/b' #목
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[1]/td[ 6 ]/button/b' #금
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[1]/td[ 7 ]/button/b' #토
    • td[ ] 태그의 숫자가 일(1), 월(2), 화(3), 수(4), 목(5), 금(6), 토(7)의 값을 갖는 것을 확인할 수 있습니다.

  1. 달력의 n주 차의 Xpath를 분석합니다.
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[ 1 ]/td[1]/button/i' #1주차
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[ 2 ]/td[1]/button/i' #2주차
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[ 3 ]/td[1]/button/i' #3주차
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[2]/table/tbody/tr[ 4 ]/td[1]/button/i' #4주차
    • tr[ ] 태그의 숫자가 N 주차(N)의 값을 갖는 것을 확인할 수 있습니다.

  1. 달력의 월(month) Xpath를 분석합니다.
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[ 2 ]/table/tbody/tr[1]/td[1]/button/i' # 이번 달 작성일 기준 11월
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[ 3 ]/table/tbody/tr[1]/td[1]/button/i' # 다음 달 작성일 기준 12월
     '//*[@id="__next"]/div/div[1]/div[11]/div[2]/div[1]/div[2]/div/div[ 4 ]/table/tbody/tr[1]/td[1]/button/i' # 2달 후 작성일 기준 1월
    • div/div[ ] 태그의 숫자가 이번 달(2)부터 다음 달(3)의 순서로 값을 갖는 것을 확인할 수 있습니다.

달력 선택의 Xpath를 분석한 결과 /div[Month]/table/tbody/tr[Week]/td[Day] 임을 알 수 있습니다.




2. 날짜 선택하기

정해진 출발, 돌아올 날짜를 달력에서 선택

  • 검색 정확도를 높이기 위해 공항명이 아닌 공항코드 (IATA 3 Letter Airport Code)로 검색
  • 예를들어 "인천" 이 아닌 "ICN" 으로 검색
  • 다른 설명은 주석 참고
# 이 프로젝트에서는 왕복 항공권을 기준으로 작성되었습니다.
# selenium Ver : 3.14.1
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 웹드라이버 열기 (네이버 항공권)
driver = webdriver.Chrome()
driver.get("https://flight.naver.com/")
time.sleep(1)

# 입력칸에 출발지, 목적지를 입력하고 목록 중 첫번 째를 선택하는 함수
def airway(parts):
    for part in parts:
        # Xpath를 분석 > 출발지:button[1], 도착지:button[2]인 것을 반복문을 통해 간소화 list Index : 0, 1
        index = parts.index(part)
        driver.find_element_by_xpath(f'//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[1]/button[{int(index)+1}]').click()
        driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[1]/div/input').send_keys(part)
        time.sleep(0.1)
        driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[2]/section/div').click()
        time.sleep(0.5)
# 가는날, 오는날 선택하는 함수
def select_dates(month, week, day):
    print(f"week 번호 : {week}   요일 번호 : {day}")
    driver.find_element_by_xpath(f'//*[@id="__next"]/div/div[1]/div[9]/div[2]/div[1]/div[2]/div/div[{month}]/table/tbody/tr[{week}]/td[{day}]/button/b').click()
    time.sleep(0.1)

# 출발, 도착지 [김포, 제주]
ports = {'김포':'GMP','인천':'ICN','제주':'CJU','김해':'PUS','대구':'TAE'}
points = [ports['김포'],ports['제주']]
print(points)
airway(points)

# 가는 날 클릭
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[2]/button[1]').click()
time.sleep(1)

# 이번 달
month = 2
# 3주 차 // 2주 차 = 2 // 현재에 맞게 수정하세요.
week = 3
# 요일 선택
day_go = '토요일'
# 체류 기간
day_n_nights = 4

# 검색 할 요일 선택
days = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일']
day = days.index(day_go)+1      # 선택한 요일
select_dates(month, week, day)  # 출발날짜 : select_dates 함수에 월, 주차, 요일 입력 후 클릭
day = day+day_n_nights-1        # 도착날짜 계산 > +체류 기간
# 체류기간에 따라 바뀌는 주(week) 계산
if day > 7:
    week+=day//7
    day = day%7
try:
    # 만약 체류 기간이 2개의 달(11월~12월)에 걸쳐있을 경우
    select_dates(month, week, day)
except:
    if week >= 4:
        month += 1
        week = 1
        select_dates(month, week, day)


관련글 모아보기



python3.9 | camp-lee@naver.com


python3.9 | camp-lee@naver.com


python3.9 | camp-lee@naver.com

반응형
반응형

[셀레니움 응용] 네이버 항공권 검색 1편 출발지 도착지 선택

파이썬 셀레니움을 사용하여 네이버 항공권 정보를 얻어오는 방법을 소개합니다.




목차:




1. 네이버 항공권 페이지 열기

셀레니움을 처음 접하시면 여기를 클릭하여 설치 및 사용법을 확인하실 수 있습니다.


# 이 프로젝트에서는 왕복 항공권을 기준으로 작성되었습니다.
# selenium Ver : 3.14.1
from selenium import webdriver
from selenium.webdriver.common.keys 
import time
# 웹드라이버 열기 (네이버 항공권)
driver = webdriver.Chrome()
driver.get("https://flight.naver.com/")

홈페이지에서 크롬 검사도구를 사용하여 원하는 elements를 찾는 방법




2. 출발지 도착지 선택하기

Xpath를 이용해서 출발지와 도착지를 선택하는 방법

  1. 가장 간단하게 작성법
# 이 프로젝트에서는 왕복 항공권을 기준으로 작성되었습니다.
# selenium Ver : 3.14.1
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 웹드라이버 열기 (네이버 항공권)
driver = webdriver.Chrome()
driver.get("https://flight.naver.com/")

# 출발지 선택
departure = "GMP"  # 김포
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[1]/button[1]').click()
time.sleep(0.1)
# 출발지 입력
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[1]/div/input').send_keys(departure)
time.sleep(0.1)
# 목록 중 첫번 째 선택
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[2]/section/div').click()
time.sleep(0.5)

# 도착지 선택
destination = "CJU"  # 제주
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[1]/button[2]').click()
time.sleep(0.1)
# 출발지 입력
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[1]/div/input').send_keys(destination)
time.sleep(0.1)
# 목록 중 첫번 째 선택
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[2]/section/div').click()
time.sleep(0.5)

(TIP) 입력 칸 선택, 텍스트 입력, 목록 선택의 동일한 구조를 가지므로 함수로 작성하여 코드를 간소화 할 수 있습니다.


  1. 동일한 구조 함수로 묶기
# 이 프로젝트에서는 왕복 항공권을 기준으로 작성되었습니다.
# selenium Ver : 3.14.1
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 웹드라이버 열기 (네이버 항공권)
driver = webdriver.Chrome()
driver.get("https://flight.naver.com/")

# 입력칸에 출발지, 목적지를 입력하고 목록 중 첫번 째를 선택하는 함수
def airway(part):
    driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[1]/div/input').send_keys(part)
    time.sleep(0.1)
    driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[2]/section/div').click()
    time.sleep(0.5)

# 출발지 선택
departure = "GMP"  # 김포
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[1]/button[1]').click()
time.sleep(0.1)
# airway 함수 인수에 출발지 입력
airway(departure)

# 도착지 선택
destination = "CJU"  # 제주
driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[1]/button[2]').click()
time.sleep(0.1)
# airway 함수 인수에 도착지 입력
airway(destination)



3. 출발지 도착지 선택하기(간결한 코드)

반복되는 동일한 구조를 간결한 코드로 구성

# 이 프로젝트에서는 왕복 항공권을 기준으로 작성되었습니다.
# selenium Ver : 3.14.1
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 웹드라이버 열기 (네이버 항공권)
driver = webdriver.Chrome()
driver.get("https://flight.naver.com/")

#입력칸에 출발지, 목적지를 입력하고 목록 중 첫번 째를 선택하는 함수
def airway(parts):
    for part in parts:
        # Xpath를 분석 > 출발지:button[1], 도착지:button[2]인 것을 반복문을 통해 간소화 list Index : 0, 1
        index = parts.index(part)
        driver.find_element_by_xpath(f'//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[1]/button[{int(index)+1}]').click()
        time.sleep(0.1)
        driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[9]/div[1]/div/input').send_keys(part)
        time.sleep(0.1)
        driver.find_element_by_xpath('//*[@id="__next"]/div/div[1]/div[4]/div/div/button/span').click()
        time.sleep(0.5)

# 출발, 도착지 {김포, 제주}
points = ['GMP', 'CJU']
airway(points)



관련글 모아보기



python3.9 | camp-lee@naver.com


python3.9 | camp-lee@naver.com


python3.9 | camp-lee@naver.com

반응형

+ Recent posts