반응형

 

포트폴리오 개발 중 다른 Web에서의 정보를 받아와야 하는 상황이 생겨서 Nodejs를 통해서 HTML Parser를 만들어서 원하는 정보를 크롤링(정확하게는 스크래핑..?)하는 방법을 포스팅하려고 합니다.

예제로 2021.04.24 오전 10시경 화양동의 온도를 네이버 메인 페이지에서 가져오는 코드를 작성해본다면

 

먼저 크롬브라우저 기준으로 F12를 눌러 개발자 도구를 켜서 원하는 정보가 어떤 태그의 어떤 Class 값 (혹은 Id 값)을 가지고 있는지 확인합니다.

원하는 정보(현재 기온 17.9도)가 strong태그 안에 있으며 class 값은 current입니다. 

 

 

1. 패키지 설치

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

node.js 에서 HTML을 파싱하기 위해서 cheerio 모듈을 이용합니다. 그리고 request모듈의 경우 원하는 페이지에 HTTP 요청을 보내기 위해서 필요합니다.

 

2. HTML 소스 받아오기

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

var url = "https://www.naver.com/";

request(url, function(error, response, html){
    if (error) {throw error};

    console.log(html);
});

요청을 통해 받은 HTML소스입니다.

 

3. 특정 class 혹은 id 값 가져오기

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

var url = "https://www.naver.com/";

request(url, function(error, response, html){
    if (error) {throw error};

    var $ = cheerio.load(html);

    $('.current').each(function(){
        console.log("현재 온도 : " + $(this).text());
    })
});

포스팅 작성하는 도중 기온이 1.1도나 더 올랐군요. (실시간이니까...)

 

개발자 도구를 통해서 원하는 기온 정보가 strong 태그 내에 class="current"라는 사실을 알고 있습니다. 따라서 

$('.current')

위와 같은 방식으로 특정 값을 가져올 수 있으며 만약 class가 아닌 id 값으로 표시가 되어있다면 아래와 같은 방식으로 가져올 수 있습니다.

$('#current')

 

 

 

 

 

 

<참고 URL>

sarc.io/index.php/development/774-node-js-html-html-parser

반응형

+ Recent posts