본문 바로가기
언어/PYTHON

[Python] Selenium 예약 프로그램 기능

by HmHjj 2023. 4. 11.
728x90

Python을 기반으로 Selenium 라이브러리를 사용하여 예약 프로그램을 만드는 방법에 대해 설명합니다.

필요 준비물

  1. chrome browser install
  2. python install
  3. Selenium install
  4. 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을 이용하면 자동으로 예약을 진행할 수 있습니다. 이를 활용하여, 다양한 예약 프로그램을 만들어보세요!

 

728x90

'언어 > 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

댓글