[사전스터디] 저가 비행기 티켓 구하기 - 3(진행중 ②)

hyuckhoon.ko·2020년 5월 7일
0

What I learned in wecode

목록 보기
15/109

'제주항공'에 접속해서 출발지, 도착지, 날짜 선택, '선택완료'버튼 누르기 등의 작업을 했다.

구현되는 모습을 찍은 영상이 있지만, 영상 업로드를 지원하지를 않으니......



기존엔, 크롬 드라이버 클래스가 계속 누적된 채 작동되다보니 버벅이는 현상이 심했고, Run의 70% 정도가 런타임 에러가 나왔다.

왜냐하면, 아직 웹사이트는 열리지 않았는데
코드는 특정 태그를 찾고 클릭을 누르는 행위를 진행하고 있었기 때문이다.

'크롬 드라이버 서버'의 사용 주기를 설정하여
웹사이트 접속시간을 획기적으로 줄이는 데 시간을 할애하였다.

[ 변경 전 코드 ]

# 1. 제주항공 홈페이지 접속
           
           self.driver = webdriver.Chrome(
           '/Users/khh18/Downloads/chromedriver_win32/chromedriver.exe')  
           self.driver.get(homepage)
           sleep(2)
           # 2. '편도' 클릭  (원래는 '왕복'으로 default 되어 있음)
           self.driver.find_element_by_xpath(
               '//input[@id="btnTripSingle"]').click()

[ 변경 후 코드 ]

# 1. 제주항공 홈페이지 접속
          self.service = Service(
              '/Users/khh18/Downloads/chromedriver_win32/chromedriver.exe')
          self.service.start()
          self.driver = webdriver.Remote(self.service.service_url)
          # self.driver = webdriver.Chrome(
          #       '/Users/khh18/Downloads/chromedriver_win32/chromedriver.exe')  

          self.driver.get(homepage)
          # self.driver.get(homepage)
          # sleep(2)
          # 2. '편도' 클릭  (원래는 '왕복'으로 default 되어 있음)
          self.driver.find_element_by_xpath(
              '//input[@id="btnTripSingle"]').click()

속도가 너무 느려서 구글링 및 selenium 공식 문서를 확인한 결과,

import time
from selenium import webdriver

driver = webdriver.Chrome('/path/to/chromedriver')  # Optional argument, if not specified will search path.
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()

와 같은 방식으로 할 경우,
속도가 획기적으로 빨라진다고 나와있었다. 구글링해서 직접 찾은 점 그리고
특히! 내 코드에 맞도록 조금씩 수정해서 완성한 점이 뿌듯했다.

크롬 드라이버 서버의 버그 이슈가 있다.
Error reading broker pipe: 파이프가 끝났습니다. (0x6D)
Error sending sync broker message: 파이프가 닫히는 중입니다. (0xE8)

구글링을 해보니 다음 버전에서 개선되서 RELEASE 될 예정이라고 한다.
우선 내 크롬 버전부터가 최신버전이 아니며, 그 버전에 맞는 크롬 드라이버를 설치했었다.

내가 당장 개선할 수 있는 크롬 업그레이드부터 해야겠다.

                                    - One step at a time -

0개의 댓글