드디어 마지막 작업 🥺 👀 할 일 1. GitHub Actions 알아보기 2. main.yml 파일 작성 3. Secrets 설정 1️⃣ GitHub Actions란? GitHub Actions란 빌드, 테스트, 배포 파이프라인의 자동화를 제공하는 도구다. GitHub 저장소를 사용하고 있다면 누구나 사용할 수 있으며, 저장소에서 발생한 이벤트에 따라 특정 작업을 실행시킬 수 있다. CI/CD를 위한 도구지만 이벤트가 발생하지 않아도 주기적으로 어떤 작업을 반복해서 시킬 수도 있다. 이것을 스케줄링이라고 하는데 이걸 이용해서 프로그램을 특정 시각에 자동으로 실행시키는 것을 해볼 것이다. 그전에 GitHub Actions엔 알아야 할 개념이 몇 가지 있다. 이 개념에 맞춰서 YAML 파일을 구성하는데, ..
프로젝트의 하이라이트!이번 글에선 저번 챕터에서 만든 html을 메일로 전송하기 위한 여정을 떠난다. 👀 큰 그림 그리기1. nodemailer 세팅2. 메일 보내기3. gmail 2단계 인증 설정(앱 비밀번호)4. .env 사용 1️⃣ Nodemailer 세팅하기이메일 전송 라이브러리로 email.js와 nodemailer 둘 중 고민을 했는데 간단한 기능을 사용하기에 nodemailer가 좀 더 편하다고 느껴서 결정했다. 우선 nodemailer를 설치해 주자.npm i nodemailer 그런 다음 모듈을 임포트 한다.import nodemailer from 'nodemailer'; 2️⃣ 메일 보내기nodemailer에는 transporter와 transport라는 개념이 있다.tran..
지난 챕터에서 데이터를 뽑아 객체 형식으로 예쁘게 만드는 것까지 진행했다. 😃이번 챕터에서는 이렇게 뽑은 데이터를 전달받아 HTML을 동적으로 생성하는 것 까지 다룬다.nodemailer를 사용하는 부분은 생각보다 길어져서 따로 뺐다. 👀 큰 그림을 그려보자오늘 구현할 내용은 다음과 같다. 1. 이메일 전송용 HTML 템플릿을 만든다.2. cheerio를 사용해 템플릿 안에 들어갈 요소를 동적으로 생성한다. 1️⃣ HTML 이메일 템플릿이메일 안에 내용으로 HTML을 보내면 웹 페이지 처럼 보여주고 싶은 내용을 좀 더 가독성 좋게 구성할 수 있다.문제는.. 이메일은 호환성이 안 좋기 때문에 사용할 수 있는 태그가 매우 한정적이라는 것이다.이메일에는 웹 처럼 따로 표준이 없기 때문에 다양한 메일 서..
HTML은 어디서 가져와야 하나? Cheerio의 getting started를 따라가면서 이것으로 가상 DOM을 조작해 데이터를 뽑아낼 수 있음을 알 수 있었다. 그렇다면 크롤링할 HTML 문서는 어떻게 가져와야 할까? 만약 내가 특정 사이트에 진입하면 내 컴퓨터(클라이언트)는 서버에 사이트를 렌더링 하는 데 필요한 데이터를 요청한다. 이때 렌더 트리를 구성하기 위한 HTML 파일이 오게 되는데, 이것이 우리가 스크래핑할 HTML 문서다. 상명대학교 공식 홈페이지를 통해서 이를 확인해 보자. 아래는 https://www.smu.ac.kr/ko/index.do 주소로 사이트에 접속했을 때 일어나는 네트워크 요청을 개발자 도구로 확인한 사진이다. '헤더'의 '일반' 항목을 보면 요청 URL 주소를 확인할 ..
프로젝트 세팅하기 첫 node.js 프로젝트인지라 모르는 게 많았기 때문에 세팅하는 데 어려움이 있었다🥲 비슷한 프로젝트를 원하는 다른 분들에게 도움이 되고자.. 자세히 적어보려 한다. 사용할 도구 및 환경은 다음과 같다. node.js JS에 대한 숙련도를 높이기 위해 node.js 환경에서 구현했다. 다만 DB를 사용하지 않아서 express와 같은 백엔드 프레임워크는 사용하지 않았다. cheerio 스크래핑한 공지사항 페이지에서 데이터를 뽑고, 이메일 전송용 html을 동적으로 생성하기 위해 사용한다. axios HTTP 통신으로 스크래핑할 페이지의 html 문서를 불러오는 데 사용한다. nodemailer 이메일 전송할 때 필요한 node.js 어플리케이션용 모듈이다. dotenv 이메일 주소, ..
왜 갑자기 크롤러를? 교수님께서 데이터셋 구축 도구 제작(Chat Prompt 프로젝트)를 제안하실 때 '이번 기회에 크롤링 배워봐~'라며 꼬셨(?)는데 여차저차 결국 크롤링은 하지 않고 넘어갔다. Chat Prompt 프로젝트 최종 미팅 후에 3일을 퍼져 있다가 이대로는 안돼!! 하는 마음에 구현 위시 리스트를 열어 보았는데 그중 뉴스레터 제작 해보기가 눈에 들어왔고, 관련한 프로젝트를 서치 해 보니 스크래핑한 데이터를 뉴스레터처럼 이메일로 보내는 프로젝트가 많이 보여 내가 하고 싶었던 것들을 모두 할 수 있는 좋은 아이디어다! 생각해 개발을 시작했다. 대학교 1학년 때 들었던 말 중 기억에 남는 것이 있다. '대학은 갠플이야. 공지는 네가 찾아봐야 해' 맞는 말이다. 누가 알려주길 바라면 안 되지. ..