我有一些这样的HTML:
<span id="cod">Code:</span> <span>12345</span>
<span>Category:</span> <span>faucets</span>我想获取类别名称(“水龙头”)。这是我的试验:
var $ = cheerio.load(html.contents);
var category = $('span[innerHTML="Category:"]').next().text();但这不起作用( innerHTML修改器不选择任何内容)。
有什么线索吗?
发布于 2016-01-11 03:22:34
代码不能工作的原因是因为[innerHTML]是一个属性选择器,而innerHTML不是元素上的属性(这意味着没有选择任何内容)。
您可以根据文本过滤span元素。在下面的示例中,.trim()用于修剪所有空格。如果文本等于'Category:',则该元素被包括在过滤后的返回元素集中。
var category = $('span').filter(function() {
return $(this).text().trim() === 'Category:';
}).next().text();如果元素的文本恰好是'Category:‘,上面的代码片段将过滤元素。如果要在元素的文本中包含该字符串时选择元素,可以使用:contains选择器(如注释中所述):
var category = $('span:contains("Category:")').next().text();或者,使用.indexOf()方法也可以:
var category = $('span').filter(function() {
return $(this).text().indexOf('Category:') > -1;
}).next().text();发布于 2020-11-02 17:16:27
一个更简单的解决方案是:
var category = $('span:contains("Category:") + span').text()这是css加上:contains伪代码,它是jQuery的一部分,并由cheerio支持。
https://stackoverflow.com/questions/34709765
复制相似问题