반응형
반응형
반응형

문제점 : 파이참에서 마이크로파이썬 업로드 시 업로딩이 안되고 무한로딩 걸리는 현상

Connecting to COM7
Uploading files: 0% (0/1)

 

해결방법 :

ESP32 CAM 모듈에서 Pycharm을 사용하여 MicroPython 실행 시 Uploading files: 0% 에서 무한로딩 걸리는 현상을 해결하려면 ESP32 CAM 모듈의 펌웨어를 업데이트 해줘야 한다.

1. Thonny 다운로드 및 설치 (https://thonny.org/) 한글설정 가능

2. 도구 - 옵션 - 인터프리터

 

Install or update MicroPython (esptool) 클릭

설치 ( 사용하는 각 버전에 맞도록 선택 후 설치 시작 )

 

from machine import Pin
from time import sleep

led = Pin(4, Pin.OUT)

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(2)

완료되면 예제코드 스크립트 실행해서 확인한다.  정상적으로 업로드가 되는 것을 확인.

Thonny에서 정상적으로 업로드가 되면 파이참에서도 정상적으로 마이크로 파이썬을 사용할 수 있다.

 

반응형
반응형

[파이썬] input 여러개

파이썬 input 예제




목차:




1. input 여러개 (한 번에)

입력받은 데이터를 가공하여 한 번에 여러개의 data가 입력된 것처럼 할 수 있습니다. 단, data간의 구분자가 필요합니다.

예시 1. data = "사과 배 바나나 수박" 구분자 : 공백( )
예시 2. data = "사과,배,바나나,수박" 구분자 : 쉼표(,)
예시 3. data = "사과/배/바나나/수박" 구분자 : 슬래시(/)

이 구분자를 이용해 문자열 split(자르기) 합니다.

fruits = input("입력(여러개 입력 시 쉼표로 구분) : ").split(',')
print(fruits)
  • 출력
입력(여러개 입력 시 쉼표로 구분) : 사과,배,바나나,수박
['사과', '배', '바나나', '수박']

Process finished with exit code 0



2. input 여러개 (반복문)

반복문을 사용하여 입력을 여러번 나눠할 수 있습니다. 구분자를 필요로 하지 않습니다. 필요에 따라 반복문 종료 문자가 필요할 수 있습니다.


  1. 특정 횟수 반복 입력 (for 반복문)
    • 반복입력 받을 횟수를 정한 뒤 for 문 작성합니다.
# 입력을 저장할 리스트 선언
fruit_list = []
for i in range(1,4)
    fruit = input(f'3개의 과일 입력(현재 {i}번 째) : ')
    fruit_list.append(fruit)
print(fruit_list)
  • 출력
3개의 과일 입력(현재 1번 째) : 사과
3개의 과일 입력(현재 2번 째) : 배
3개의 과일 입력(현재 3번 째) : 바나나
['사과', '배', '바나나']

Process finished with exit code 0



  1. 무한 반복 입력 - while 반복문 입력 종료 문자 필요

    • 반복문을 통해 input 받은 내용을 fruit_list에 저장합니다.
    • 종료 문자 (X 혹은 x)를 입력 받으면 반복문 탈촐합니다.
# 입력을 저장할 리스트 선언
fruit_list = []
while True:
    fruit = input(f'과일 입력(입력 종료 : X) : ')
    if fruit == 'X' or fruit == 'x':
        break
    fruit_list.append(fruit)
print(fruit_list)
  • 출력
과일 입력(입력 종료 : X) : 사과
과일 입력(입력 종료 : X) : 배
과일 입력(입력 종료 : X) : 바나나
과일 입력(입력 종료 : X) : 수박
과일 입력(입력 종료 : X) : 오렌지
과일 입력(입력 종료 : X) : X
['사과', '배', '바나나', '수박', '오렌지']

Process finished with exit code 0



python3.9 | camp-lee@naver.com

반응형
반응형

[파이썬] 리스트 평균

리스트 평균은 리스트 내의 모든 숫자를 더한 뒤, 리스트의 갯수로 나눔

# 평균을 구할 리스트
datas = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 리스트의 숫자를 더할 함수 초기화
sum = 0
for d in datas:
    sum+=d
#평균 = 전체의 합 / 숫자의 갯수(리스트 갯수)
average = sum/len(datas)
print(average)
출력 결과 보기
5.0

Process finished with exit code 0





python3.9 | camp-lee@naver.com

반응형
반응형

[파이썬 문법] for문 예제

파이썬 기본 문법 다루기




목차:




1. for문

for문의 기본 구조

for (A) in (B):




2. for문 range 예제

for (변수) in range(시작-이상, 끝-미만, 간격)

# for n in range(a,b,c)
# >> a에서 b-1까지 c의 간격으로 n출력

for n in range(1,5,1):
    print(n)
출력 결과 보기
1
2
3
4

Process finished with exit code 0


for문 거꾸로 출력 : -1씩 증가

for n in range(0,-5,-1):
    print(n)
출력 결과 보기
0
-1
-2
-3
-4

Process finished with exit code 0



3. for문 리스트 예제

for (인자) in (리스트)

datas = ['a', 'b', 'c']
for data in datas:
    print(data)
출력 결과 보기
a
b
c

Process finished with exit code 0


리스트 순서 뒤집기 : list.reverse()

datas = ['a','b','c']
datas.reverse()
for data in datas:
    print(data)
출력 결과 보기
c
b
a

Process finished with exit code 0


문자열 출력, 리스트와 동일

chars = 'Hello'
for c in chars:
    print(c)
출력 결과 보기
H
e
l
l
o

Process finished with exit code 0




4. 인덱스 다루기

인덱스를 출력하여 몇번 째 출력인지 파악할 수 있음.

  • 기본 숫자 범위 반복, 출력

    # 기본 범위 반복(시작점, 증가량 생략가능 >> 시작점 0, 1씩 증가)
    for i in range(5):
       print(i)
  • 문자열, 리스트 - 방법, 출력 형태 동일 (예시 - 리스트)

    datas = ['a','b','c']
    for data in datas:
    
      # index 출력 : datas 리스트에 data가 몇번 째 인자(인덱스) > 출력
      print(datas.index(data))


python3.9 | camp-lee@naver.com

반응형
반응형

[Tkinter 2편] 위젯 배치, 위치 설정

파이썬 Tkinter 패키지를 사용하여 직접 GUI를 만들어 사용하는 방법을 공유합니다.




목차:




1. Tkinter 위젯 배치 방법 소개

  • Tkinter에서 Button, Entry 등 "위젯"을 배치하기 위해서 아래의 3가지 방법을 이용할 수 있습니다.
    1. Place (절대좌표)
    2. Pack (상대위치)
    3. Grid (격자형 배치)

  • 예시 button = tk.Button(root, text="테스트")를 배치하기 위해:
    1. Place : button.place(x=1, y=1)
    2. Pack : button.pack(side="left")
    3. Grid : button.grid(row=1, column=1)

하나의 프레임 내에서 Place / Pack / Grid 를 동시에 사용할 수 없습니다.




2. Place 절대좌표 배치

하나의 프레임 내에서 Place / Pack / Grid 를 동시에 사용할 수 없습니다.

  • Place는 지정한 프레임 내에서 x, y 좌표값을 직접 입력하여 위젯을 배치할 수 있습니다.
  • 위젯 위치를 정밀하게 배치할 경우 유용하게 사용할 수 있습니다.
  • .place(x= x좌표, y= y좌표)
## tkinter를 tk로 선언
import tkinter as tk

## Tk setup
root = tk.Tk()

# GUI Window 제목 설정
root.title("Camp Lee Python")
# GUI Window 사이즈 설정
root.geometry("240x150")

btn1 = tk.Button(root, text="버튼1")
btn1.place(x=3, y=5)
btn2 = tk.Button(root, text="버튼2")
btn2.place(x=50, y=24)

root.mainloop()




3. Pack 상대좌표 배치

하나의 프레임 내에서 Place / Pack / Grid 를 동시에 사용할 수 없습니다.

  • Pack은 지정한 프레임 내에서 위젯 간의 상대적인 위치로 위젯을 배치할 수 있습니다.
  • 상대위치를 사용하므로 먼저 작성된 코드가 먼저 적용됩니다. (코드 순서에 영향을 받음)
  • 위젯을 간편하게 배치할 때 유용하게 사용할 수 있습니다.
  • 윈도우 창 크기를 변환할 때 위치에 맞게 조절됩니다.
  • .pack(side="위치")
## tkinter를 tk로 선언
import tkinter as tk

## Tk setup
root = tk.Tk()

# GUI Window 제목 설정
root.title("Camp Lee Python")
# GUI Window 사이즈 설정
root.geometry("240x100")

entry = tk.Entry(root)
entry.pack(side="top")

btn1 = tk.Button(root, text="예", width=10)
btn1.pack(side="left")
btn2 = tk.Button(root, text="아니오", width=10)
btn2.pack(side="right")
btn2 = tk.Button(root, text="닫기", width=10, command= root.quit)
btn2.pack(side="bottom")

root.mainloop()




4. Grid 격자형 배치

하나의 프레임 내에서 Place / Pack / Grid 를 동시에 사용할 수 없습니다.

  • Grid는 지정한 프레임 내에서 격자형태로 위젯을 배치할 수 있습니다.
  • 위젯을 격자형으로 배치하고자 할 때 유용하게 사용할 수 있습니다. (예시 : 계산기의 숫자패드)
  • 행과 열 번호로 위젯을 배치할 수 있습니다.
  • .grid(row= 행번호,column= 열번호)
## tkinter를 tk로 선언
import tkinter as tk

# GUI Window 제목 설정
root.title("Camp Lee Python")
# GUI Window 사이즈 설정
root.geometry("241x130")

btn_min = tk.Button(root, text="-", width=10)
btn_plus = tk.Button(root, text="+", width=10)
btn0 = tk.Button(root, text="0", width=10)
btn1 = tk.Button(root, text="1", width=10)
btn2 = tk.Button(root, text="2", width=10)
btn3 = tk.Button(root, text="3", width=10)
btn4 = tk.Button(root, text="4", width=10)
btn5 = tk.Button(root, text="5", width=10)
btn6 = tk.Button(root, text="6", width=10)
btn7 = tk.Button(root, text="7", width=10)
btn8 = tk.Button(root, text="8", width=10)
btn9 = tk.Button(root, text="9", width=10)

# 더하기 빼기 버튼 위치(Grid)
btn_min.grid(row=4, column=1)
btn_plus.grid(row=4, column=3)

btn0.grid(row=4, column=2)
btn1.grid(row=3, column=1)
btn2.grid(row=3, column=2)
btn3.grid(row=3, column=3)
btn4.grid(row=2, column=1)
btn5.grid(row=2, column=2)
btn6.grid(row=2, column=3)
btn7.grid(row=1, column=1)
btn8.grid(row=1, column=2)
btn9.grid(row=1, column=3)
root.mainloop()




5. Frame에 대해서

  • Palce, Pack, Gird는 동일한 프레임 내에서 사용할 수 없으므로, 다양한 배치방법을 사용하기 위해서는 Frame을 나눠줘야 합니다.

  • Frame 또한 같은 방법으로 배치를 해야합니다.

  • root 라는 Window 내에 frame이 배치됩니다.

  • button = tk.Button(생성한 프레임)

  • Place

      frame = tk.Frame(root)
      frame.place(x=1, y=1)
    
      button = tk.Button(frame, text="절대좌표 프레임속")
      button.pack()
  • Pack

      frame = tk.Frame(root)
      frame.pack(side="top")
    
      button = tk.Button(frame, text="상대위치 프레임속")
      button.pack()
  • Grid

      frame = tk.Frame(root)
      frame.grid(row=1, column=1)
    
      button = tk.Button(frame, text="격자형태 프레임속")
      button.pack()
  • 이렇게 생성한 프레임에 원하는 위젯을 원하는 배치형태로 넣습니다.

  • 예제 (기능은 넣지 않았습니다.)

## tkinter를 tk로 선언
import tkinter as tk

## Tk setup
root = tk.Tk()

# GUI Window 제목 설정
root.title("Camp Lee Python")
# GUI Window 사이즈 설정
root.geometry("240x150")

# 상단 프레임 (Pack 사용)
frame_top = tk.Frame(root)
frame_top.pack(side="top")

entry = tk.Entry(frame_top, width=22)
entry.pack(side="left")
btn_clear = tk.Button(frame_top, text="지우기", width=10)
btn_clear.pack(side="right")

# 하단 프레임 (Grid 사용)
frame_bot = tk.Frame(root)
frame_bot.pack(side="top")

btn_min = tk.Button(frame_bot, text="-", width=10)
btn_plus = tk.Button(frame_bot, text="+", width=10)
btn0 = tk.Button(frame_bot, text="0", width=10)
btn1 = tk.Button(frame_bot, text="1", width=10)
btn2 = tk.Button(frame_bot, text="2", width=10)
btn3 = tk.Button(frame_bot, text="3", width=10)
btn4 = tk.Button(frame_bot, text="4", width=10)
btn5 = tk.Button(frame_bot, text="5", width=10)
btn6 = tk.Button(frame_bot, text="6", width=10)
btn7 = tk.Button(frame_bot, text="7", width=10)
btn8 = tk.Button(frame_bot, text="8", width=10)
btn9 = tk.Button(frame_bot, text="9", width=10)

# 더하기 빼기 버튼 위치(Grid)
btn_min.grid(row=4, column=1)
btn_plus.grid(row=4, column=3)

btn0.grid(row=4, column=2)
btn1.grid(row=3, column=1)
btn2.grid(row=3, column=2)
btn3.grid(row=3, column=3)
btn4.grid(row=2, column=1)
btn5.grid(row=2, column=2)
btn6.grid(row=2, column=3)
btn7.grid(row=1, column=1)
btn8.grid(row=1, column=2)
btn9.grid(row=1, column=3)
root.mainloop()


참고 링크 : Tkinter를 사용하여 계산기 만들기 예제 바로가기



python3.9 | camp-lee@naver.com

반응형

'[GUI] Tkinter' 카테고리의 다른 글

[Tkinter 1편] 패키지 설치 및 간단 예제  (0) 2021.11.25
반응형

[Tkinter 1편] 패키지 설치 및 간단 예제

파이썬 Tkinter 패키지를 사용하여 직접 GUI를 만들어 사용하는 방법을 공유합니다.


목차:


1. Tkinter 패키지 설치 및 간단 예제


2. Tkinter GUI 생성

  • GUI 윈도우 생성 기본 틀
## tkinter를 tk로 선언
import tkinter as tk

## Tk setup
root = tk.Tk()

# GUI Window 제목 설정
root.title("Camp Lee Python")
# GUI Window 사이즈 설정
root.geometry("300x100")

root.mainloop()


3. Button 넣기 간단 예제

  • 자세한 설명은 주석을 참고하세요.
  • 위젯을 구성하는 방법에 대해 구조를 참고하세요
## tkinter를 tk로 선언
import tkinter as tk
from tkinter import messagebox

## Tk setup
root = tk.Tk()

# GUI Window 제목 설정
root.title("Camp Lee Python")
# GUI Window 사이즈 설정
root.geometry("250x60")

# YES 버튼 생성, command(명령) : msgbox 함수에 "YES Button" 넣기, width : 버튼 크기(가로)
btn_YES = tk.Button(root, text="YES", width=20, command = lambda: msgbox('YES Button'))
btn_YES.pack()

# NO 버튼 생성, command(명령) : msgbox 함수에 "NO Button" 넣기, width : 버튼 크기(가로)
btn_NO = tk.Button(root, text="NO", width=20, command = lambda: msgbox('NO Button'))
btn_NO.pack()

# 버튼을 눌렀을 때 실행되는 메세지박스 함수
def msgbox(text):
    tk.messagebox.showinfo("버튼 클릭",text)

root.mainloop()


python3.9 | camp-lee@naver.com

반응형

'[GUI] Tkinter' 카테고리의 다른 글

[Tkinter 2편] 위젯 배치 | 위치 설정  (0) 2021.11.26
반응형

[셀레니움 응용] 네이버 항공권 검색 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. 문자열 구조

문자열의 기본 구조

# 따옴표 사이의 문자들
word = 'Hello world'    #작은 따옴표
word = "Hello world"    #큰 따옴표
# 숫자를 문자로 표현
word = "123" or '123'   #따옴표
word = str(123)         #str 함수

# 긴 문자열의 경우 ('''  '''사이의 문자들)
word = '''A
B
C
D
'''



2. 문자열 자르기 split

split 함수

# 특정 문자 "/" 를 기준으로 단어를 자를 수 있음.
word = "2021/11/05/금요일"
word = word.split("/")
print(word)

결과 list로 반환됨

['2021', '11', '05', '금요일']

Process finished with exit code 0



3. 문자열 합치기

# 문자도 더하기를 할 수 있음
year = "2021"
month = "11"
day= "05"
date = year + "/" + month + "/" + day
print(date)

결과

2021/11/05

Process finished with exit code 0



4. 문자열 인덱싱

word = "Hello Camp"
#index: 0123456789
print(word[0])      # H
print(word[-1])     # p
print(word[0:5])    # Hello
print(word[3:])     # lo Camp

결과

H
p
Hello
lo Camp

Process finished with exit code 0



5. 문자열 포맷팅

포맷 코드

코드 내용
%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 % 자체)
date = 5
day = "금요일"
print("오늘은 %d일 %s입니다." % (date, day))
  • 결과
오늘은 5일 금요일입니다.

Process finished with exit code 0

간편하게 포맷 함수 사용하기

  • format과 { }를 사용
date = 5
day = "금요일"
print("오늘은 {}일 {}입니다.".format(date, day))
print(f'오늘은 {date}일 {day}입니다.')


python3.9 | camp-lee@naver.com

반응형
반응형

[셀레니움 응용] 네이버 메일 보내기

파이썬 셀레니움을 사용하여 네이버 메일을 자동으로 보내는 방법을 소개합니다.




셀레니움 기초 네이버 로그인하기에 이어 메일보내는 방법입니다. 로그인 후 click, send_keys만으로 쉽게 메일을 보낼 수 있습니다.

  • 코드 설명이 필요하신 분들은 여기를 클릭해주세요.
# selenium Ver : 3.14.1
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import clipboard
import time

# 웹드라이버 열기 (네이버 메인 화면)
driver = webdriver.Chrome()
driver.get("https://www.naver.com/")

# 네이버 메인화면에서 로그인 버튼 클릭
driver.find_element_by_xpath('//*[@id="account"]/a').click()
time.sleep(1)   # 1초 시간 지연

# 로그인 창에 아이디/비밀번호 입력
loginID = "로그인 ID"
clipboard.copy(loginID)
driver.find_element_by_xpath('//*[@id="id"]').send_keys(Keys.CONTROL, 'v')

loginPW = "로그인 PW"
clipboard.copy(loginPW)
driver.find_element_by_xpath('//*[@id="pw"]').send_keys(Keys.CONTROL, 'v')
time.sleep(1)

# 로그인 버튼 클릭
driver.find_element_by_xpath('//*[@id="log.login"]').click()

# 네이버 메일 클릭
driver.find_element_by_xpath('//*[@id="NM_FAVORITE"]/div[1]/ul[1]/li[1]/a').click()
# 메일 쓰기 클릭
driver.find_element_by_xpath('//*[@id="nav_snb"]/div[1]/a[1]/strong').click()

time.sleep(1)

# 받는 사람
mail_to = '받는 사람 주소'
# 제목
mail_title = '제목'
# 내용
mail_cont = '내용'

driver.find_element_by_xpath('//*[@id="toInput"]').send_keys(mail_to)
driver.find_element_by_xpath('//*[@id="subject"]').send_keys(mail_title)
driver.find_element_by_xpath('//*[@id="subject"]').send_keys(Keys.TAB, mail_cont)

# 메일 보내기 버튼 클릭
driver.find_element_by_xpath('//*[@id="sendBtn"]').click()


python3.9 | camp-lee@naver.com

반응형

+ Recent posts