当前位置:  开发笔记 > 编程语言 > 正文

Cheerio:如何按文字内容选择元素?

如何解决《Cheerio:如何按文字内容选择元素?》经验,为你挑选了1个好方法。

我有一些像这样的HTML:

Code: 12345
Category: faucets

我想获取类别名称("水龙头").这是我的试用版:

var $ = cheerio.load(html.contents);
var category = $('span[innerHTML="Category:"]').next().text();

但这不起作用(innerHTML修饰符不选择任何东西).

任何线索?



1> Josh Crozier..:

您的代码不起作用的原因是因为它[innerHTML]是一个属性选择器,并且innerHTML不是该元素的属性(这意味着没有选择任何内容).

您可以span根据文本过滤元素.在下面的示例中,.trim()用于修剪任何空格.如果文本等于'Category:',则该元素将包含在已过滤的返回元素集中.

var category = $('span').filter(function() {
  return $(this).text().trim() === 'Category:';
}).next().text();

如果文本正好是"类别:",则上面的代码段将过滤元素.如果要在文本包含该字符串时选择元素,可以使用:contains选择器(如注释中所指出的):

var category = $('span:contains("Category:")').next().text();

或者,使用该.indexOf()方法也可以:

var category = $('span').filter(function() {
  return $(this).text().indexOf('Category:') > -1;
}).next().text();


@JoshCrozier看来它使用这个库作为选择器,支持包含:https://www.npmjs.com/package/CSSselect
如果他想检查它是否包含字符串,他也可以使用$('span:contains(“ Category:”)')`。
推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有