본문 바로가기
C#

[C#] 웹 크롤링을 이용하여 자동 출석체크 하는 방법

by Minius 2022. 2. 17.
반응형

[C#] 웹 크롤링을 이용하여 자동 출석체크 하는 방법

배경

서점에 매주 가서 책을 사다보니 할인 받는 방법을 알게 되었고, 그 중 하나가 바로 출석체크였다.

얼마전까지만 해도 해당 서점에 가야만 출석체크가 되는 줄 알았다...

하지만 그건 체크인이었다.

 

어쨌든 어디서든 하루에 한번 출석체크를 할 수 있다는 사실을 알고, 크롤링을 만들어야겠다고 생각했다.

 

알아보니 크롤링을 하는 라이브러리인 Selenium을 Python이 아닌 C# 등 많은 다른 언어에서 쓸 수 있었다.

https://www.selenium.dev/downloads/

 

구현

그래서 아래와 같은 4개의 Nuget Package들을 깔았고,

 

또 아래와 같은 간단한 코드로 늦은 밤에 하나 하고 자려고 한다.

using System;
using System.Threading;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace KyoboCheck
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var driverService = ChromeDriverService.CreateDefaultService();
            var options = new ChromeOptions();
            options.AddArgument("disable-gpu");

            var driver = new ChromeDriver(driverService, options);
            
            driver.Navigate().GoToUrl("URL 주소");
            // 로딩 대기
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1);

            var loginButton = driver.FindElement(By.XPath(""));
            loginButton.Click(); // 로그인 화면 접속
            Thread.Sleep(500);

            var idInput = driver.FindElement(By.XPath(""));
            idInput.SendKeys(""); // id 입력

            var pwInput = driver.FindElement(By.XPath(""));
            pwInput.SendKeys(""); // pw 입력
            Thread.Sleep(500);

            var loginButton2 = driver.FindElement(By.XPath(""));
            loginButton2.Click(); // 출석체크

            var checkButton = driver.FindElement(By.XPath(""));
            checkButton.Click();
        }
    }
}

 

결론

driver.Manage와 Thread.Sleep 중 무엇을 쓰든 개인의 재량인 것 같다.

오늘부터 매일 출석체크를 하는 우수회원이 될 것이다.

-

1년 반이 지난 2023년 08월 오늘, 나는 그동안 저 크롤링으로 꽤 많은 출석일수를 채웠다.

하지만 맥북으로 교체한 이후, 컴퓨터를 끌 일이 없어서 "재시동시 출석체크"가 되지 않아 쓰지 않게 되었다.

 

그래도 저 기본 지식으로 많은 활동을 할 수 있으니 참고하여 많은 아이디어를 내서 사용하면 좋겠다.

 

참고

https://www.selenium.dev/

 

Selenium

Selenium automates browsers. That's it!

www.selenium.dev

댓글