Cheerio不会解析数据

时间:2017-03-23 18:24:54

标签: javascript node.js web-scraping cheerio

由于某些原因,我的代码无效。我已经尝试了一切,并确保了cheerio确实正在加载。无论出于何种原因,foreach循环都不会执行。

jQuery本身可以工作,并已在浏览器中进行过测试。没有错误被抛出。我得到的只是一个空url数组的响应。

ex:[]

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;

1 个答案:

答案 0 :(得分:0)

好的,我觉得现在真的很蠢。在期待cheerio返回任何结果之前,请确保您要使用的dom元素实际上已加载到页面上。

我试图操纵的元素是通过AJAX加载的,因此,cheerio没有找到元素。

这并没有引起任何错误,所以在浪费我的生命时间之前请小心谨慎。