Python 과 Telegram, selenium으로 KTX 자동 예매하기(5. korail.py 설정 및 selenium 사용하여 로그인)
-
1. korail.py import 추가
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import telepot
import time
********************Selenium 의 webdriver 최신버전의 문법이 바뀐거같다.
find_element_by_id 문법이 find_element 로 변경
from selenium import webdriver
selenium을 사용하기 위해 webdriver를 import 한다.
Terminal에서 "pip install selenium" 명령어를 통해 라이브러리를 설치한다.
* selenium
: 웹 브라우저를 컨트롤하여 웹 UI를 자동화 하는 라이브러리이며, 웹 크롤링을 할때 사용한다.
from selenium.webdriver.support.ui import Select
Html 태그 중 Select Box 중 필요한 value를 선택하기 위해 selenium.webdriver 내부의 ui 기능을 import 한다.
from selenium.webdriver.common.keys import Keys
selenium으로 웹 크롤링 중 키보드 입력을 위한 모듈을 import 한다.
import time
웹 브라우저가 켜지는 시간이 있기 때문에 딜레이를 주기 위해 time 라이브러리를 사용한다.
2. KTX_Korail Class 생성 및 로그인 설정
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
class KTX_Korail():
def __init__(self):
super().__init__()
def login(self):
self.driver = webdriver.Firefox()
self.driver.get("https://www.letskorail.com/korail/com/login.do")
time.sleep(1)
self.driver.find_element(By.ID, "txtMember").send_keys("내 코레일멤버십번호 입력")
self.driver.find_element(By.ID, "txtPwd").send_keys("코레일 비밀번호")
// 여기서 XPATH 경로에 id 값을 큰따옴표로 묶었기 때문에 해당 XPATH 경로는 작은따옴표로 묶는다.
self.driver.find_element(By.XPATH, '//*[@id="loginDisplay1"]/ul/li[3]/a/img').click()
self.driver.find_element(By.CSS_SELECTOR, "#header > div.lnb > div.lnb_m01 > h3 > a > img").click()
class KTX_Korail():
def __init__(self):
super().__init__()
KTX_Korail 클래스를 생성 후 초기화 함수 설정
super().__init__() 은 KTX_Korail() 클래스를 호출한 부모클래스인 KTX_Telegram() 클래스의 초기화 메서드를 호출 및 사용하기 위해 설정한다.