2017-03-23 25 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

[OK]をので、私は今、本当にばか感じます。 cheerioが結果を返すことを期待する前に、あなたが使用しようとしているdom要素が実際にページにロードされていることを確認してください。

私が操作しようとしていた要素がAJAX経由でロードされていたため、cheerioは要素を見つけられませんでした。

これはエラーを投げなかったので、私のようにあなたの人生の時間を無駄にする前に注意してください。

関連する問題