[Python] 자동 출석체크

SMONGS·2025년 4월 6일

매번 사이트에서 접속해서 출석체크를 통해 포인트나 보상을 받고 있는 경우가 많다.

마찬가지로 출석체크를 하는데, 매일하는 것이 무척 귀찮았다.

그래서 Python의 Selenium을 사용해서 자동화 툴을 만들기로 했다.

프레임워크 : Selenium

  • 웹 브라우저 자동화 라이브러리
  • 로그인, 버튼 클릭, 페이지 이동 등을 자동화 가능
  • 크롬, 파이어폭스, Edge 등 다양한 브라우저 지원

환경 세팅 (Window)

Linux나 Mac에서도 물론 가능하다.

  1. 가상환경 생성 (선택)
python -m venv attendance_env
source attendance_env/bin/activate     # Mac/Linux
attendance_env\Scripts\activate        # Windows
  1. 필요 라이브러리 선택
pip install selenium
pip install webdriver_manager

코드 구현

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time

# 사용자 정보 입력
yesfile_id = "your_id"            # 사이트 아이디
yesfile_pw = "your_password"      # 사이트 비밀번호

# 크롬 드라이버를 다운받아 사용
options=Options()
service=Service(ChromeDriverManager().install())
driver=webdriver.Chrome(service=service,options=options)

try:
    # 예스파일 로그인 페이지 접속
    driver.get("https://example.com")

    # 아이디 입력
    id_input = driver.find_element(By.NAME, "user_id")  # 아이디 입력창의 name 값 입력
    id_input.send_keys(yesfile_id)

    # 비밀번호 입력
    pw_input = driver.find_element(By.NAME, "user_pw")  # 비밀번호 입력창의 name 값 입력
    pw_input.send_keys(yesfile_pw)
    pw_input.send_keys(Keys.RETURN)

    time.sleep(3)  # 로그인 처리 대기

    # 출석체크 페이지로 이동
    driver.get("https://example.com/attendance")

    time.sleep(2)  # 페이지 로딩 대기

    # 출석체크 버튼 클릭
    checkin_button = driver.find_element(By.CLASS_NAME, "attendance-button")  # 실제 클래스명으로 변경 필요
    checkin_button.click()

    print("출석체크 완료!")

except Exception as e:
    print(f"오류 발생: {e}")

finally:
    time.sleep(3)
    driver.quit()

코드 설명

  1. from selenium.webdriver.common.by import By
    웹 페이지에서 요소(버튼, 입력창 등)를 찾을 때 사용하는 "찾는 방법"들을 제공한다.

    By는 ID, NAME, CLASS_NAME, TAG_NAME, CSS_SELECTOR, XPATH 같은 다양한 방식으로 HTML 요소를 찾을 수 있도록 도와주는 도구이다.

  2. from selenium.webdriver.common.keys import Keys
    실제 키보드에서 누르는 것처럼 특수 키(엔터, 탭, 방향키 등)를 누를 수 있게 한다.

    Keys.RETURN, Keys.ENTER, Keys.TAB, Keys.ESCAPE, Keys.ARROW_DOWN 등등 사용 가능하다.

  3. id_input = driver.find_element(By.NAME, "user_id")
    웹 페이지에서 <input> 태그 중에 name="user_id"인 입력 칸(아이디 입력창)을 찾아서, id_input이라는 변수에 저장한다.

  4. id_input.send_keys(yesfile_id)
    방금 찾은 아이디 입력창(id_input)에 yesfile_id 변수에 들어 있는 값을 키보드로 입력하듯 자동으로 타이핑한다.

  5. pw_input.send_keys(Keys.RETURN)
    pw_input이라는 비밀번호 입력창에 Enter 키를 누른 것처럼 동작하게 한다.

번외

혹시 누군가가 시크릿 탭으로 가능한지 궁금해 한다면 밑의 코드를 추가하면 된다.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--incognito")  # 시크릿 모드 옵션
options.add_argument("--headless=new") # 최신 헤드리스 모드

이후의 내용하면 아래 링크로 ㄱㄱ
링크

profile
반갑습니당~😄

0개의 댓글