[셀레니움 응용] 네이버 항공권 검색 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를 이용해서 출발지와 도착지를 선택하는 방법
- 가장 간단하게 작성법
# 이 프로젝트에서는 왕복 항공권을 기준으로 작성되었습니다.
# 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) 입력 칸 선택, 텍스트 입력, 목록 선택의 동일한 구조를 가지므로 함수로 작성하여 코드를 간소화 할 수 있습니다.
- 동일한 구조 함수로 묶기
# 이 프로젝트에서는 왕복 항공권을 기준으로 작성되었습니다.
# 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
'셀레니움 > 응용' 카테고리의 다른 글
[셀레니움 응용] 네이버 항공권 검색 3편 가격 검색 (2) | 2021.11.07 |
---|---|
[셀레니움 응용] 네이버 항공권 검색 2편 달력 선택 (0) | 2021.11.06 |