아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
솔직한줄나비94
솔직한줄나비9420.02.14

cheerio html 파싱 질문

var cheerio = require('cheerio');

var request = require('request');

var url = 'https://www.kweather.co.kr/index.html';

request(url, function (err, res, html) {

if (!err) {

var $ = cheerio.load(html);

$(".topheadermiddle_textArea > h2 > span ").each(function () {

var data = $(this);

var title = data;

});

consol.log(title);

}

})

인터넷 보고 따라하는데 이 코드에서 계속 오류가나네요 잘못된점 짚어 주시면 감사하겠습니다

55글자 더 채워주세요.
답변의 개수
1개의 답변이 있어요!
  • 안녕하세요?

    우선.. cheerio 라는 걸 질문글을 통해 알게되서 기분이 좋습니다. ㅎㅎ

    현재 질문자 분의 글로는 문제점이 알수 없어서 직접 하시려는걸 해봤습니다. 다음에 올리실때는

    1. 현재 하시려고 하는 작업에 대한 설명

    2. 작업중인 코드나 접근 방법에 대한 설명

    3. 작업중에 발생한 문제점 또는 에러 메시지

    등을 같이 올려주시면 문제 파악이나 도움 받으시기에 더 용이합니다.

    현재 https://www.kweather.co.kr/index.html 에서

    위의 데이터를 크롤링 해보실려고 하는것 같습니다.

    현재 코드에서 문제점을 제가 느낀점은

    1. console.log(title) -> consol.log(title) 오타

    2. $(".topHeadermiddletextArea > h2 > span").each 부분을 보고 해당 사이트에 가서 보니, .top_header _middle_textArea 였습니다.

    [정정] 아...이게 제가 .top_header_middletextArea 를 여기 a-ha 에서 치다가 알게 된건데 여기 에디터에 단 축키 문제인지 shift + _ 를 하게 되면 문제가 생기네요.. 질문자님께서 올리신것처럼 .topHeadermiddle_textArea 처럼 올라가네요... 2번 문제는 질문자님 문제가 아닌것 같습니다.

    3. if (!err) { } 를 쓰셨는데, 오히려 반대로 하시는게 좋은 코딩방법입니다. if (!err) { ) 하실 경우 해당 {} 안에서 계속 코드 작업을 하기 때문에 나중에 코드에 대한 가독성이 떨어집니다.

    request(url, function (err, res, html) { // if(!err) { <작업 코드> } <---- 이렇게 하면 <작업 코드>가 길어질수록 가독성이 떨어짐 if (err) return console.log(err) <작업 코드> })

    제가 한 방법은 아래와 같습니다.

    var cheerio = require("cheerio"); var request = require("request"); var url = "https://www.kweather.co.kr/index.html"; request(url, function(err, res, html) { if (err) return console.log("err:", err); var $ = cheerio.load(html); $(".top_header_middle_textArea > h2 > span ") .contents() .toArray() .map(element => { console.log("data:", element.data); }); });

    실행결과 화면

    [nodemon] restarting due to changes... [nodemon] starting `node index.js` data: 미세먼지 data: 89㎍/㎥ data: 나쁨 [nodemon] clean exit - waiting for changes before restart

    그럼 화이팅하세요!~