
Python을 기반으로 Selenium 라이브러리를 사용하여 예약 프로그램을 만드는 방법에 대해 설명합니다.
필요 준비물
- chrome browser install
- python install
- Selenium install
- chrome web driver download
1. Chrome brower 설치
Chrome을 설치하기 위해서는 먼저 Chrome 웹사이트에 접속하여 다운로드합니다.
https://www.google.com/chrome/ 주소를 통해 접속할 수 있습니다.
웹사이트에 접속하면 "Chrome 다운로드" 버튼을 클릭하면 됩니다.

2. Pyhton 설치
py 파일 실행하기 위한 python 을 아래 링크에서 설치 합니다.
http://www.python.org/downloads
Download Python
The official home of the Python Programming Language
www.python.org

3. [Python] Selenium 라이브러리 설치하기
예약 프로그램을 만들기 위해서는 Selenium과 Chrome 웹 드라이버가 필요합니다. 다음과 같이 명령어를 입력하여 라이브러리를 설치합니다.
pip install selenium
4. Chrome 웹 드라이버 다운로드
Chrome 브라우저를 띄우기 위한 웹 드라이버를 아래 사이트에서 다운로드합니다.
https://chromedriver.chromium.org/downloads
웹 드라이버 설정하기
Selenium은 웹 드라이버를 통해 브라우저를 제어합니다. 따라서, 사용할 웹 드라이버를 설정해주어야 합니다. 다음과 같이 코드를 작성하여 웹 드라이버를 설정합니다.
from selenium import webdriver
driver = webdriver.Chrome('c:\\\\chromedriver.exe')
Python 예약 프로그램 만들기
이제 Selenium을 사용하여 예약 프로그램을 만들어보겠습니다.
1. 크롬 브라우저를 띄워 웹페이지 조작 준비하기.
다음과 같이 코드를 작성하여 크롬 브라우저를 실행 시킵니다.
from selenium import webdriver
reserve_url='https://etk.srail.co.kr/cmc/01/selectLoginForm.do'
options = webdriver.ChromeOptions()
#options.add_argument('headless') # 웹 브라우저를 띄우지 않는 headless chrome 옵션 적용
options.add_argument('disable-gpu') # GPU 사용 안함
options.add_experimental_option("excludeSwitches", ["enable-logging"])
driver = webdriver.Chrome('D:\\chromedriver.exe', options=options)
driver.get(reserve_url)
브라우져 옵션을 사용하여 크롬 창을 띄우지 않을수도 있으니 테스트 시에는 켜서 진행하는게 좋습니다.
gpu 사용하지 않을 경우 더 빠르게 조회가 가능하니 옵션 적용합니다.
reserve_url 에 예약하려는 사이트 주소를 입력합니다.
위 python 을 실행하면 아래와 같이 사이트가 생성 됩니다.

2. 로그인 하기
창이 뜬 상태에서 F12 를 눌러 개발 툴을 킵니다.

개발 툴 왼쪽 위에 네모위에 방향키를 클릭하고 실제 입력할 회원번호와 비밀번호에 위치를 확인합니다.

ID 가 srchDvNm01 이고 passwd 가 hmpgPwdCphd01 이니 해당 ID 에 값을 입력하는 코드를 작성합니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
# 로그인 하기
def login():
driver.find_elements(By.ID, 'srchDvNm01')[0].send_keys('1234567')
driver.find_elements(By.ID, 'hmpgPwdCphd01')[0].send_keys('passwd')
해당 문을 실행하면 입력 값이 들어간 것을 확이할수 있습니다.

로그인을 위한 확인 버튼을 찾아보겠습니다. 다시 커서를 키고 확인 부분에 마우스를 이동시키면 해당 설정값을 확인할 수 있습니다.

classname 조회 방법을 통하여 submit 을 확인후 클릭하는 과정까지 진행하도록 소스를 추가합니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
# 로그인 하기
def login():
driver.find_elements(By.ID, 'srchDvNm01')[0].send_keys('1234567')
driver.find_elements(By.ID, 'hmpgPwdCphd01')[0].send_keys('passwd')
driver.find_elements(By.CLASS_NAME,'submit')[0].click()
driver.implicitly_wait(2)
elements 를 찾는 함수는 아래와 같이 다양하게 제공되니 찾는 소스에 맞게 사용하면 됩니다.
3. 함수 목록 찾기
element(단일) , elements(복수) 설명
| By.ID | 태그의 id값으로 추출 |
| By.NAME | 태그의 name값으로 추출 |
| By.XPATH | 태그의 경로로 추출 |
| By.LINK_TEXT | 링크 텍스트값으로 추출 |
| By.PARTIAL_LINK_TEXT | 링크 텍스트의 자식 텍스트 값을 추출 |
| By.TAG_NAME | 태그 이름으로 추출 |
| By.CLASS_NAME | 태그의 클래스명으로 추출 |
| By.CSS_SELECTOR | css선택자로 추출 |
그리고 버튼 클릭후 driver.implicitly_wait 함수로 딜레이를 줘야 다음 창에 원하는 elemets 찾을 수 있습니다.
4. 윈도우 변경
마지막으로 창 변경 방법만 소개하자면 클릭 후 새로운 창이 열릴 경우 handle 도 변경해야 새로운 윈도우의 elemets를 찾을 수 있습니다.
# 윈도우 변경
time.sleep(0.5)
window_before = driver.window_handles[0]
window_after = driver.window_handles[1]
# change to address web page
driver.switch_to.window(window_after)
driver.implicitly_wait(1)
결론
Python과 Selenium을 사용하여 예약 프로그램을 만드는 방법에 대해 알아보았습니다. 예약 프로그램은, 다양한 서비스에서 사용되고 있으며, Selenium을 이용하면 자동으로 예약을 진행할 수 있습니다. 이를 활용하여, 다양한 예약 프로그램을 만들어보세요!
'언어 > PYTHON' 카테고리의 다른 글
| [Django] Custom User 적용 AbstractUser (0) | 2022.12.08 |
|---|---|
| [Django] Custom User 적용 (0) | 2022.12.02 |
| [Django] 프로젝트 실행 (1) | 2022.12.01 |
| [Django] Python 환경 구성 (0) | 2022.11.30 |
댓글