
티스토리 글 이전 중 - 원본 시리즈 23.06.09 - 23.06.14
데이터셋 구축 도구 제작 초기 단계에 크롤링이 필요할 것 같다는 교수님의 말씀에 공부를 해뒀는데, 요구사항이 변경되고 해당 기능이 빠지면서 구현하지는 못했다.
그렇게 프로젝트가 마무리되고, 위시리스트를 돌아 보며 다음엔 어떤 걸 만들어볼가 고민했는데 그중 뉴스레터 제작 해보기가 눈에 들어 왔다. 관련 프로젝트를 서치해 보니 스크래핑한 데이터를 뉴스레터처럼 이메일로 보내는 프로젝트가 많이 보여 '내가 하고 싶었던 것들을 모두 할 수 있는 좋은 아이디어다!' 생각해 개발을 시작했다.
대학교 1학년 때 들었던 말 중 기억에 남는 것이 있다.
'대학은 갠플이야. 공지는 네가 찾아봐야 해'
맞는 말이다. 누가 알려주길 바라면 안 되지. 근데.. 봐야 할 사이트가 하나가 아니다. 😢
대부분의 공지사항은 공식 사이트에 올라오지만 외에도 학과 공지사항은 학과 홈페이지에, 인턴십, 공모전 및 비교과 프로그램은 SW중심사업단 홈페이지에 올라오니, 기본적으로 3개는 봐야 하는 것이다.
이런 상황에서 바빠서 며칠 정도 확인을 못하면 동계 인턴십 프로그램을 놓치는 불상사가 발생하기도 한다.(절대 경험담이다)
이런 불편함을 해결하기 위해 평일 저녁 학교 공지사항을 크롤링하여 이메일로 보내주는 프로그램을 기획하게 되었다.
크롤링이란 web상에 존재하는 컨텐츠를 자동적으로 탐색하는 작업이다.
비슷한 의미의 단어로 웹 스크래핑(web scraping)이 있는데, 특정 웹 사이트나 페이지에서 원하는 데이터를 자동으로 추출해 내는 작업을 말한다.
내가 구현하고자 하는 프로그램은 스크래핑에 가깝지만 대중적으로 크롤링이란 단어를 많이 사용하므로 크롤링으로 통일하여 언급할 것이다.
크롤링에 대해서 처음 알았을 때 '아무리 웹사이트에 올라온 정보라지만 이를 수집하는 것이 위법은 아닐까?' 하는 걱정이 있었다.
그러다 합법적으로 '웹 크롤링'하는 방법(상)과 합법적으로 '웹 크롤링'하는 방법(하)을 읽고 걱정을 접을 수 있었다.
요약하자면 크롤링 자체는 우리가 일반적으로 웹 사이트를 이용하는 프로세스와 같기 때문에 위법행위가 아니다. 다만 아래의 경우 위법행위로 간주될 수 있으니 주의해야 한다.
내가 크롤링하려는 페이지는 robotx.txt를 확인해도 모두 OK였다!
크롤링하는 방식은 크게 4가지가 있다.
나는 간단하게 HTML 태그를 기반으로 필요한 정보를 수집할 것이기 때문에 cheerio를 사용해 구현할 것이다.
다음 챕터에서는 프로젝트 세팅과 함께 cheerio의 Getting Started를 따라가며 무엇을 할 수 있는 라이브러리인지 탐색해볼 것이다.