由于某些原因,我的代码无效。我已经尝试了一切,并确保了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;
答案 0 :(得分:0)
好的,我觉得现在真的很蠢。在期待cheerio返回任何结果之前,请确保您要使用的dom元素实际上已加载到页面上。
我试图操纵的元素是通过AJAX加载的,因此,cheerio没有找到元素。
这并没有引起任何错误,所以在浪费我的生命时间之前请小心谨慎。