为什么这个Cheerio属性选择器不起作用?

时间:2017-06-09 11:18:54

标签: javascript jquery node.js cheerio

我想使用通常在jQuery中找到的以下选择器来创建一个适用于其子代的函数:

var useroverviewHook = $("div[data-pnref='overview'] *[data-overviewsection]");   

然而,它在Cheerio中不起作用。 Nodejs控制台正在报告

console.log($(useroverviewHook).length) is 0

即使在浏览器中测试时,值不为0,也存在多个元素。

首先,我认为内容是动态的,但如果我输出

res.writeHead(200, {'Content-Type': 'text/plain'}); res.write(html);

data-overviewsection就在那里。但是cheerio说它不是。

1 个答案:

答案 0 :(得分:1)

首先,你不需要使用$() twise

var useroverviewHook = $("div[data-pnref='overview'] *[data-overviewsection]");
console.log(useroverviewHook.length)

您可以简化此选择器(删除*):

div[data-pnref='overview'] [data-overviewsection]

检查,输入选择器名称和属性时可能会出错,因为语法很好。

此外,有时浏览器会修改HTML,如果我遇到类似问题时会将其保存,我将响应保存到文件中并再次检查响应html。