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()