dev_eun

[Python] 토익 티켓팅 매크로 제작기 ① with telegram-bot, chromedriver 본문

개발일지/토이프로젝트

[Python] 토익 티켓팅 매크로 제작기 ① with telegram-bot, chromedriver

_eun 2020. 5. 17. 22:30

일단 내 계획은 파이썬의 Selenium을 이용해서 자동결제까지 하는 방식이다. 그리고 내 노트북으로 하루 종일 돌릴 수 없으니 AWS 프리 티어를 이용해서 하루 종일 돌릴 생각이다. 그리고 접수에 성공을 하게 되거나 예외가 발생할 경우에 내가 알아야 하니 텔레그램이란 메신저를 통해 알람이 오게 할 것이다.

참고로 내 개발 환경은 Mac Catalina이다.

일단 파이썬은 설치되어 있다고 가정하고 selenium, beautifulsoup, telegram을 설치한다.

$ pip install selenium
$ pip install beautifulsoup4
$ pip install python-telegram-bot

텔레그램과 연동을 위해 스마트폰이나 PC에 텔레그램을 설치하고 telegram-bot을 만든다.

~ 추가 하기 ~

그리고 그 봇에게 메시지를 하나 보낸다.
텔레그램으로 메시지를 보내기 위해선 각 사용자의 고유 아이디를 알아야 한다. 이것들을 알기 위해 파이썬을 실행해보자.

import telegram

bot = telegram.Bot(token=settings.telgm_token)

def check_telegram_id():
    updates = bot.getUpdates()  # get Updates
    for u in updates:  # print message
        print(u.message)

봇을 생성할 때 받은 token 값을 설정해준다. 그리고check_telegram_id함수를 실행해 보면, 이제까지 봇에게 도착한 모든 메세지의 주인들의 정보가 나온다.
출력된 결과물을 보면 json형태일 것인데, chat이라는 값 안에 id값이 있을 것이다. 그 ID 값을 저장해놓자. 나중에 sendMessage()함수에서 사용할 것이다.


셀레니움은 브라우저를 이용하여 간편하게 크롤링을 할 수 있는 라이브러리이다.
나는 크롬을 사용할 건데 그러려면 드라이버가 필요하다. 드라이버는 여기서 다운 받을 수 있다.
https://chromedriver.chromium.org/downloads
chrome://version 을 들어가면 나오는 크롬 브라우저의 버전과 동일한 드라이버를 다운받아야 한다.
이 드라이버를 이용하여 셀레니움을 시작한다.

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('window-size=1920x1080')
options.add_argument("disable-gpu")

driver = webdriver.Chrome(settings.driver_directory, options=options)
wait = WebDriverWait(driver, 10)
action = ActionChains(driver)

headless 옵션을 하지 않으면 파이썬을 실행했을 때 창이 떠서 매크로가 진행되는 걸 그대로 볼 수 있다. 나는 서버에서 돌릴 것이기 때문에 설정해주었다.

이제 준비가 모두 끝났다. 매크로를 만들어 보자!

728x90