[Node.js] 간단한 크롤러 만들기 (feat.네이버 영화순위)

2022. 4. 7. 18:02
반응형

Node.js란?

  • 자바스크립트는 스크립트 언어로, 원래는 특정한 프로그램(ex 웹브라우저) 없이는 사용할 수가 없다. Node.js는 이를 해결하기 위해 나온 것으로, 자바스크립트를 웹브라우저에서 독립시켜 터미널에서도 자바스크립트를 실행할 수 있도록 한다. (=자바스크립트를 이용해서 웹브라우저와 무관한 프로그램을 만들 수 있다)
  • 노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있다.
  • 노드를 통해 서버를 만들거나, 서버를 실행시킬 수 있다.
  • 노드가 나오기 전까지는 웹에서 표시되는 부분은 Javascript + 서버는 다른언어로 만들어야 했지만, 이제는 자바스크립트라는 한 가지 언어로 전체 웹페이지를 만들 수 있게 되었다. 
  • Node.js는 자바스크립트 실행 환경(Node.js는 Javascript를 사용하기 위해 만들어졌다)으로, 결코 백엔드나 웹서버만을 의미하는 것이 아니다. 

 

 

 


 

모듈 설치

cheerio 

npm install --save request

 

- 편리하게(Jquery 방식) DOM의 element에 접근할 수 있도록 도와주는 모듈.

- request의 결과 html 형식의 텍스트를 받아와, 편리하게 파싱해주고 필요한 부분만 추출하는 역할을 한다.

 

 

request

npm install --save cheerio

 

- url에 요청을 보내서 response를 받는 모듈 

- 같은 역할을 하는 https라는 내장 모듈도 있지만(가벼움), request 모듈을 사용하는 것에 비해 따로 error 핸들링을 해야하거나 코드의 양이 많아지는 불편함이 있다.

 

 


 

1) 프로젝트 폴더 생성

2) 프로젝트 폴더 안에서 cheerio, request 모듈 설치

3) main.js 파일 생성 후 코드 작성

const cheerio = require('cheerio');
const request = require('request');

request(
  'https://movie.naver.com/movie/sdb/rank/rmovie.naver',
  {},
  function (error, response, body) {
    if (error) return;

    const $ = cheerio.load(body);
    const $moviesArr = $('.tit3 a');

    let titles = [];

    $moviesArr.each((i, ele) => {
      titles[i] = $(ele).attr('title');
    });

    console.log(titles);
  }
);

 

4) 터미널에서 node main.js 명령어 실행

 


 

+ 여담

원래는 프라이탁 사이트에서 가방 정보를 크롤링 해오고 싶었는데... 사이트에서 접근을 막아놓은 듯 하다.

body 안에 내용이 저게 다였음...

반응형

BELATED ARTICLES

more