반응형
배경
서점에 매주 가서 책을 사다보니 할인 받는 방법을 알게 되었고, 그 중 하나가 바로 출석체크였다.
얼마전까지만 해도 해당 서점에 가야만 출석체크가 되는 줄 알았다...
하지만 그건 체크인이었다.
어쨌든 어디서든 하루에 한번 출석체크를 할 수 있다는 사실을 알고, 크롤링을 만들어야겠다고 생각했다.
알아보니 크롤링을 하는 라이브러리인 Selenium을 Python이 아닌 C# 등 많은 다른 언어에서 쓸 수 있었다.
구현
그래서 아래와 같은 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월 오늘, 나는 그동안 저 크롤링으로 꽤 많은 출석일수를 채웠다.
하지만 맥북으로 교체한 이후, 컴퓨터를 끌 일이 없어서 "재시동시 출석체크"가 되지 않아 쓰지 않게 되었다.
그래도 저 기본 지식으로 많은 활동을 할 수 있으니 참고하여 많은 아이디어를 내서 사용하면 좋겠다.
참고
'C#' 카테고리의 다른 글
[C#] 테스트 케이스 첫 작성 (0) | 2022.06.15 |
---|---|
[C#] 상대 경로가 같은 여러 게시 출력 파일을 찾았습니다 (1) | 2022.03.18 |
[C#] 달(월)의 마지막 날 구하기 (0) | 2022.02.15 |
[C#] List Insert, List 앞에 더하기 (0) | 2022.01.04 |
[C#] Class to ExpandoObject / dynamic (0) | 2021.11.09 |
댓글