[BoostCamp]Day02

김용현·2023년 7월 12일
0

[Boostcamp]

목록 보기
1/2

크롤링을 직접 해보다

저희는 주소창에 url을 검색하게 되면 특정 사이트를 받을 수 있습니다. 즉 url 주소로 get 을 보내면 해당 사이트를 구성하는 html 데이터를 반환받는 것입니다! 그렇다면, 저희가 평소에 api요청을 보내듯 Nodejs(혹은 Python이나 JAVA) 내에서 해당 요청을 보내고, 그 데이터 내에 우리가 필요로 하는 특징(특정 클래스 혹은 id 등등)을 지닌 영역을 잘라내면 원하는 데이터를 손쉽게 가지고 올 수 있지 않을까요?

이것이 크롤링의 기본 원리 입니다. Nodejs에서 크롤링을 할 때 주로 사용하는 axios와 cheerio는 크롤링을 할 때 필요한 역할을 수행해주는 모듈입니다. (두가지의 역할을 한번에 해주는 crawler 모듈도 존재합니다)

  • axios : 저희가 특정 사이트의 html 데이터를 요청
  • cheerio : html 형태의 데이터 내에 우리가 원하는 특정 데이터를 parsing하여 text나 attrs의 데이터를 반환, jQuery 형태의 문법을 다수 사용

추가적으로 크롤링을 하는 중 한글이 깨지게 되는 경우가 발생할 수 있습니다. 이럴 때에는 iconv-lite 모듈을 통해 EUC-KR로 디코딩을 진행한다면 한글이 깨지는 문제를 해결할 수 있습니다. (단 iconv-lite를 사용한다면, axios로 get 요청을 보낼 때, buffer를 넣고 디코딩을 진행해야 합니다.)

크롤링의 기본 원리를 이해하고 각각의 툴의 사용방법을 잘 익힌다면, 데이터를 크롤링하는 코드를 쉽게 설계할 수 있습니다.

2일차 후기

2일차가 지나고 나니 부스트 캠프의 진짜 면모를 알 수 있었습니다. 1일차 때 진행한 과제는 "첫날이니까 쉽게 내주어야 겠다 :)" 같은 수준의 과제였습니다. 1일차는 저녁 7시에 어떻게든 과제를 완료할 수 있었지만, 2일차 과제는 아침 8시에 마무리 지을 수 있었습니다(물론 3시간 정도 자긴 했습니다).

크롤링의 경우 이전 뉴스 데이터를 수집하고 분석을 하는 프로젝트를 만들어 본 적이 있었습니다. 그 때는 프론트엔드 담당을 진행하다보니 실제 크롤링이 어떤 원리인지 그리고 어떻게 동작하는지 전혀 알지 못했습니다. 이번 과제를 하면서 "내가 할 일이 아니더라도 더 관심있게 같이 알아보았다면 덜 힘들었을 텐데 ㅠㅜ"라는 후회를 조금 하기도 했습니다.

하지만 과제를 제시간안에 끝내지 못한건 굉장히 아쉽지만, 과제를 수행하면서 직접 경험하고, 찾아보고, 해결방법을 고민하는 과정 속에서 많은 실력이 늘었다는 것을 체감할 수 있었습니다. 가장 먼저 내가 해보지 않았던 영역을 하다보니, 이전까지는 다른 사람들의 업무였기에 잘 알지 못했던 부분도 이해할 수 있었습니다. 그리고 처음 하는 영역이다보니 워낙 많은 트러블 슈팅을 진행하게 되었는데 점차 여러번 문제를 해결하다 보니 조금은 더 논리적이고 체계적으로 문제를 해결하는 과정을 길들일 수 있었습니다.

물론 아직 얼마 되지 않은 기간이다보니, 아직 긍정적으로 있는 것일 수 있지만 마지막까지 지치지 않고 실패하더라도 배운다는 생각으로 과제를 진행해보겠습니다.

profile
함께 일하고 싶은 개발자가 되기위해 노력 중입니다.

0개의 댓글

관련 채용 정보