728x90

문제 발단

 대학교에 다니면서 제일 중요한 것이 무엇일까? 바로 공지 사항이다.
대학교 공지사항은 여러가지 이유로 나에게 도움이 되는 정보들이 많이 올라온다. 그렇기 때문에 대학생이라함은 공지사항을 챙겨봐야한다. 나는 하루에 2-3번 정도 공지사항을 보기 위해서 자주 들어간다. 조금 많이 본다.
대학 공지사항을 한 페이지만 보면 그나마 괜찮지만, 페이지가 다른 공지사항을(대학, 과 공지 등) 볼 때 매우 귀찮은 일이다.
코딩을 배우는 이유는 귀찮은 일을 줄이기 위해서다. 그러므로 내가 보는 공지를 알림으로 띄우기로 마음먹었다.

데이터 얻어 오는 수단 1: 크롤링

 학교에서 API 제공해준다면 그 정보만을 이용해서 개발하면 그만이다. 사실 그러면 좋은데 문의를 올렸는데도 답장이 없고, 아는 형도 학교 페이지를 크롤링를 하여 상업적으로 이용해도 무관하다고 허락을 받았다고 했다. 그래서 일단 크롤링을 하기로 마음 먹었다. 나중에 API 요청해보고 안되면 그냥 크롤링으로 하려고 한다.

 크롤링은 웹 사이트의 내용을 긁어와 필요한 내용만 가져오는 것이라고 알고 있다. 이는 불법일 수도 불법이 아닐 수 있는 것들이다. 크롤링을 할 때 JS로 하든 파이썬으로 하든 상관이 없지만 그동안 해왔던 것이  파이썬 + 뷰티풀 수프이라 이번에도 사용했다. 하지만 내가 하고 있는 이 크롤링이 이게 크롤링이 맞는 건가라는 의구심이 들 수밖에 없었다. 아래 글을 읽어보는 것을 추천한다.

velog.io/@mowinckel/%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-I

 

🏭 '웹 크롤러' 좀 그만 만들어라

아무튼 그만 만들어라.

velog.io

웹 크롤러 좀 그만 만들어라란 글을 보면 납득할 것이다. 나는 그러므로 그저 웹 페이지의 내용을 긁어왔다고 표현하고 싶다. 일단 웹 페이지 하나하나 긁어와서 내게 필요한 서비스의 데이터를 구축할 수 있게 되었다.
그냥 API를 지원해주면 좋겠다. 학생들을 위한 좋은 일이 아닐까..?

서비스 플랫폼 선택하기

 이제는 어떻게 알림을 보낼지를 결정해야 한다. 어떻게 학교 공지를 나에게 알림을 표시할까? 보통 많이 쓰이는 카카오, 페이스북 등 여러 가지 메신저가 존재한다. 이 중 뭐가 좋을까 생각을 하다 카카오는 API 사용함에 있어서 개발자에게 불친절하다고 생각이 들었고 페이스북은 내가 잘 쓰지 않고 그만 푸른 창에 들어가고 싶어 둘 다 싫었다. 싫은 것도 싫은 것이지만 봇을 만들기 시작하면 봇을 상시 켜 두어야 한다. 그러므로 AWS나 헤로쿠나 내 컴퓨터나 뭐든지 일단 켜 둬야 한다. 싫다. 어차피 하루에 2,3번 보는 공지 때문에 컴퓨터를 계속 켜 둬야 할까? 너무 낭비라고 생각했다.
 먼저 지정 시간에 컴퓨터를 자동으로 켜서 나에게 알림을 보낼 수 있는 것을 생각했다. 컴퓨터를 자동으로 이용하는 것에 적합한 것은 GitAction이라고 생각했다. 사실 이것도 그냥 컴퓨터다. 이걸로 쓰면 되겠다고 생각해서 사용방법을 익히고 나니 생각이 들었다. 내 컴퓨터도 내가 깨어있을 때 켜 있고 내가 잠을 잘 때는 공지를 보지 않는데 남의 것을 써서 만들어야 할까? 그래서 내 컴퓨터를 사용하기로 마음먹었다. 개인적으로 사용할 것이니 문제가 없을 것이다.

GitAction에 대해 테스트할 때 보던 내용은 아래 글을 참고해서 했었다.

ahnheejong.name/articles/receive-new-room-notification-mails-using-github-action/

 

GitHub Action을 사용해 새로 올라온 전월세 방 목록 받아보기

부동산 앱에 새로 올라오는 방을 매번 직접 체크하는 대신 편하게 받아볼 수 없을까?

ahnheejong.name


 소스 코드가 돌아가는 컴퓨터는 내 컴퓨터로 정했고 나머지는 알림을 보내는 종류를 정하는 것이다. 카카오도 아니고 페이스북도 아닌 메신저를 골라야 했다. 이메일이 있었다. 근본이다. 이메일은 휴대폰에 기본적으로 다 깔려있으며 알림도 뜬다. 파이썬+이메일로 나에게 메일 보내기로 마음먹기로 했다.

 크롤링으로 데이터를 긁어와서 DB에 저장할까란 생각을 했지만 그렇게 관리를 할 데이터들도 아니고 해서 간단하게 JSON형태로 저장하기로 했다.

이메일 보내기

 파이썬으로 메일을 보내는 것은 메일 관련 모듈을 사용하면 된다. 간단한 예제는 아래를 통해서 진행했었다.

pythonstudy.xyz/python/article/508-%EB%A9%94%EC%9D%BC-%EB%B3%B4%EB%82%B4%EA%B8%B0-SMTP

 

예제로 배우는 파이썬 프로그래밍 - 메일 보내기 (SMTP)

메일 보내기 (SMTP Mail) 파이썬에서 이메일을 보내기 위해서는 파이썬에 기본 내장된 smtplib 라는 모듈을 사용한다. SMTP는 Simple Mail Transfer Protocol의 약자로서 메일을 보내는데 사용되는 프로토콜이�

pythonstudy.xyz

그런데? 단순하게 링크만 보낸다면 아니 애초에 공지 헤드라인에 링크가 걸리도록 하려면 무엇을 해야 하나?
HTML를 이용하여 태그로 감싸줘야 한다. a태그라던지 그러면? 이메일 화면도 html로 꾸밀 수 있는 것이 아닌가란 생각이 들었다. 그래서 찾아본다.

이메일을 통한 HTML 보내기 정보 검색

뉴위크나 인프런 소식 등 메일로 보내준다.

텍스트만 들어가는 것이 아니라 버튼도 들어가고 하니 뭔가 다르다고 생각이 들었고 개발자 도구로 확인해보았다.

 

 

 

확인해보니 Table 태그만 사용되어있다. 왜 그럴까? 검색해본다.

이유: 테이블 외 태그는 메일 서비스 회사에서 막아놓는 경우나 각 브라우저마다 기본적인 마진 패딩의 차이가 있으므로 테이블, tr, td만 사용한다.

UI 구성하기

나는 디자인에 대한 감각이 없고, 포토샵도 잘 사용하지 않는다. 친구에게 부탁해도 시안이 없으니 고쳐줄 수도 없는 노릇이다. 그런 나에게 필요한 서비스는? 프로토 타이핑 툴이다. 광고같지만. ㅋㅋ;; 찾아보니 무료인 카카오 오븐이 있어 사용한다.

간단하게 디자인한 후 HTML 코드로 작성한다.

이런 식의 형태로  HTML을 만들고 이를 메일 형태로 보냈다. 보기에도 좋고 나쁘지 않다고 생각이 들었는데 광고를 넣을 수가 없었다. 😃 광고를 넣으면 메일에 (광고)라고 들어가야 하며 구글을 이용한 광고를 넣을 수가 없었다.

 왜 광고를 넣는다는 뚱딴지 소리가 나왔을까? -> 친구에게 말하니 이 서비스를 학교 단위로 늘려나가면 좋을 것 같다고 했다. 그래서 서비스를 하면 나는 돈을 벌고 싶다.
 공부를 해야하지만, 돈은 또 필요하다니 세상마상 모순적인 상황이다. 제일 좋은 것은 자신의 공부가 돈이 되는 경우이고 컴퓨터분야가 그런 것에 강점을 드러낸다고 생각했지만, 남의 데이터로 이렇다 저렇다 하기에는 거시기하다.

 그냥 내가 보기 위해서 이쁘게 만든 파이썬 py 파일 하나만 남았다. 뭐 좋다 이말이다.

내가 쓴 행적을 이렇게만 적어도 되는지 모르겠다. 코드도 넣어야하는지 궁금하기도 한다.
이를 쓴 이유는 내가 고민했던 흔적들을 남기기 위함이기 때문에 일단 이렇게 적은 것인데 도움이 될까..?

다음에 만들 프로그램은 노래 플레이 리스트 공유이다.
사람마다 노래 취향이 다르기 때문에 이를 공유하기 좋게 해주고 싶다.

반응형

+ Recent posts