【发布时间】:2018-04-02 21:56:47
【问题描述】:
我想向网站发出请求,获取其 html,然后将其提供给cheerio。我需要获取类".thumb" 的所有元素的所有"href" 属性。我在控制台上显示结果,我只是多次不确定,我假设它是针对找到的每个元素。尝试循环使用标签或标识符的任何其他元素时,我得到未定义,但如果我不循环并且只获取第一个元素,则会给出正确的值。
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" 时间来加载文件,但还是一样。我尝试首先将 html 文件从url 下载到我的计算机(在函数之外,在调用之前),然后将其传递给cheerio,但仍然未定义。
这是我第一个使用 Node 的个人项目,我很困惑。任何帮助表示赞赏。
【问题讨论】:
-
我相信问题在于在箭头函数中使用
this。切换到关键字函数,或使函数接受参数$("a").each( element => { console.log($(element).attr("href")) }) -
添加到@Sidney,如果你想使用箭头函数,你可以使用
.each((i, elem) => {...})。elem === this在这种情况下。 -
@Sidney - 你为什么不发布答案?
-
这个答案对我有帮助,谢谢。我认为箭头功能与正常功能完全一样。
标签: javascript jquery html node.js cheerio