클라우드 엔지니어/Docker

Docker 출석체크 이사가기 2차 출석체크 만들기

해아's 2023. 1. 26. 12:56

이전글.

https://myharu.tistory.com/218

 

Docker 가지고 놀기 1탄 - 웹 크롤링(docker,python,selenium 등등)

일단 1탄이다. 시작은 반이니까.. 흐름은 이렇다. 도커로 만든 크롤러가 특정사이트에서 특정 상품이 있는지 체크하고 있으면 텔레그램으로 알려주는 기능이다. 일단 도커파일 만들기 FROM python:3

myharu.tistory.com

https://myharu.tistory.com/219

 

출석체크 셀레니움 도커 이전작업 1일차 함수들 만들어두기

원래는 윈도우에 스케쥴링으로 구성해놨었다.. 근데 윈도우서버가 노후되고 실행이 잘안되서 도커로 이전작업을 한뒤에 클라우드에 도커 컨테이너 방식으로 올려볼 예정이다. 현재 작업된 소

myharu.tistory.com

 

작성자: pws@yos.kr ( https://myharu.tistory.com )
작성일자: 2023.01.26.
도커파일버전: 0.2
작성버전: 1.0
테스트일자: 2023.01.26.

기본적인 함수는 다만들었다 저번에본 출석체크 흐름으로 yes24출석체크를 만들어보자

이파이썬 파일은 도커안에서 실행되는것이다 잊지말자!

일단 기본적인 함수를 불러오고 셀레니움 크롬을 헤드리스 방식으로 호출한다.

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
import subprocess, pyperclip, time, datetime, os, logging, telegram, asyncio, sys, calendar
from pws_func import *

def yes24():
    option = Options()
    option.add_argument('--headless')
    option.add_argument('--no-sandbox')
    option.add_argument('--disable-dev-shm-usage')
    option.add_argument('--disable-gpu')
    option.add_argument(f'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36')
    option.add_argument("--window-size=640,1080")
    #모바일을 위해 세로로긴창을 띠운다.
    driver = webdriver.Chrome(f"/usr/src/chrome/chromedriver", options=option)

출석체크 url을 호출하고 출석버튼을 눌러 로그인 이벤트를 호출하고 로그인창으로 자동이동되면 로그인하는부분을 처리한다.

 

    #모바일을 위해 세로로긴창을 띠운다.
    driver = webdriver.Chrome(f"/usr/src/chrome/chromedriver", options=option)
    #출석체크 경로
    url = "http://m.ticket.yes24.com/Event/2020/DailyStamp.aspx"
    driver.get(url)
    #출석체크 버튼을 클릭한다
    driver.execute_script('fax_SetDailyStamp()')
    time.sleep(2)
    #로그인이 안되있으면 로그인하라고 창이뜰것이다.
    try:
        driver.find_element("xpath", '/html/body/div[7]/div[3]/div/button').click()
    except:
        print("error")
    time.sleep(2)
    #로그인창으로 이동되면 로그인하기
    driver.find_element("xpath", '//*[@id="SMemberID"]').send_keys("아이디") #아이디
    time.sleep(1)
    driver.find_element("xpath", '//*[@id="SMemberPassword"]').send_keys("비번") #비번
    time.sleep(2)
    #혹시모르니까 로그인상태 유지 체크 해제
    driver.find_element("xpath", '//*[@id="chkLoginKeep"]').click()
    time.sleep(2)
    driver.find_element("xpath", '//*[@id="btn_login"]').click() #로그인클릭
    time.sleep(2)

로그인이 완료되면 자동으로 출석체크 페이지로 이동이 될수도 있고 안될수도 있다. 안될때를 대비해 다시 출석체크 페이지로 이동하고 출석체크 버튼을 눌른다.

 

    url = "http://m.ticket.yes24.com/Event/2020/DailyStamp.aspx"
    driver.get(url)
    time.sleep(2)
    # 혹시모르니까 페이지를 다시이동
    driver.execute_script('fax_SetDailyStamp()')

출석여부를 저장하기위하여 텔레그램으로 출석횟수를 보내준다.

    time.sleep(2)
    check_alert(driver)
    time.sleep(2)
    #출석체크후 알림 체크해서 알려주기
    countStamp =  driver.find_element("xpath", '//*[@id="countStamp"]').text
    countTotalDays = driver.find_element("xpath", '//*[@id="countTotalDays"]').text
    tele_sand_msg("yes24 "+countStamp+countTotalDays+" 출석완료")
    driver.quit()

위소스는 사이트기준으로 만든것이므로 추후 링크가 변경되거나 하면 직접 수정이 필요합니다.

728x90
반응형