2017-03-23 5 views
0

내 코드가 작동하지 않습니다. 나는 모든 것을 시험해 보았고 cheerio가 실제로로드되고 있음을 확인했습니다. 어떤 이유로 든 foreach 루프는 실행되지 않습니다.Cheerio가 데이터를 구문 분석하지 않습니다

jQuery 자체가 작동하며 브라우저에서 테스트되었습니다. 오류가 발생하지 않습니다. 내가 돌아 오면 빈 URL 배열의 응답입니다.

예 : 나는 지금 정말 바보 느낄 수 있도록 []

const getHTML = (url) => { 
    var promise = new Promise((resolve, reject) => { 
     request(url, (err, res, html) => { 
      (err) ? reject(err) : resolve(html) 
     }) 
    }) 
    return promise; 
} 

const grabPages = (html) => { 

    var promise = new Promise((resolve, reject) => { 
     var urls = [] 
     var $ = cheerio.load(html) 

     $(".tdname a").each(function (i, el) { 
      var $el = $(el) 
      console.log($el) 
      urls.push($el.href) 
     }); 

     resolve(urls); 
    }) 
    return promise; 
} 

const exec =() => { 
    return getHTML('http://fakesite.net') 
     .then(grabPages).then(res => console.log(res)) 
} 

module.exports = exec; 

답변

0

좋아. Cheerio에서 결과를 반환하기 전에 사용하려는 dom 요소가 실제로 페이지에로드되었는지 확인하십시오.

내가 조작하려고했던 요소가 AJAX를 통해로드되었고, 이로 인해 cheerio가 요소를 찾지 못했습니다.

이것은 오류를 발생시키지 않았으므로 내가했던 것처럼 많은 시간을 낭비하기 전에주의를 기울여주십시오.