Cheerio在元素上调用.each()时返回undefined
我想向网站发出请求,获取它的html,并把它给予cheerio。 我需要获得类".thumb"
的所有元素的所有"href"
属性。 我在控制台上显示的结果,我只是得到了很多次未定义,我认为这是为每个元素find。 当我试图通过任何其他标签或标识符元素循环时,我得到了未定义,但如果我不循环,只是得到第一个正确的值给出。
function firstReq(){ req(url, (err,res,html)=>{ if(err){console.error(err);} var $ = cheerio.load(html); var arr = [] $("a").each(()=>{ console.log($(this).attr("href")); }); }); }
我试着console.log(html)
来检查文件是否正常。 我也尝试在迭代上设置setTimeout
,也许给"request"
和"cheerio"
时间加载文件,仍然是一样的。 我首先尝试从url
下载html文件到我的电脑(函数之外,之前调用),然后传递给cheerio,仍然未定义。
这是我与Node第一个个人项目,我很困惑。 任何帮助表示赞赏。
你可以在这里使用两种方法:
箭头function
function firstReq(){ req(url, (err,res,html)=>{ if(err){console.error(err);} var $ = cheerio.load(html); var arr = [] $("a").each((i , elem)=>{ console.log($(elem).attr("href")); }); }); }
或function:
function firstReq(){ req(url, (err,res,html)=>{ if(err){console.error(err);} var $ = cheerio.load(html); var arr = [] $("a").each(function(){ console.log($(this).attr("href")); }); }); }
request(url, (err,res,html)=>{ if(err){console.error(err);} var $ = cheerio.load(html); var arr = [] $("a").each((index,a)=>{ console.log($(a).attr("href")); }); });