首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cheerio:如何根据文本内容选择元素?

Cheerio:如何根据文本内容选择元素?
EN

Stack Overflow用户
提问于 2016-01-11 03:20:13
回答 2查看 35.8K关注 0票数 22

我有一些这样的HTML:

代码语言:javascript
复制
<span id="cod">Code:</span> <span>12345</span>
<span>Category:</span> <span>faucets</span>

我想获取类别名称(“水龙头”)。这是我的试验:

代码语言:javascript
复制
var $ = cheerio.load(html.contents);
var category = $('span[innerHTML="Category:"]').next().text();

但这不起作用( innerHTML修改器不选择任何内容)。

有什么线索吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-11 03:22:34

代码不能工作的原因是因为[innerHTML]是一个属性选择器,而innerHTML不是元素上的属性(这意味着没有选择任何内容)。

您可以根据文本过滤span元素。在下面的示例中,.trim()用于修剪所有空格。如果文本等于'Category:',则该元素被包括在过滤后的返回元素集中。

代码语言:javascript
复制
var category = $('span').filter(function() {
  return $(this).text().trim() === 'Category:';
}).next().text();

如果元素的文本恰好是'Category:‘,上面的代码片段将过滤元素。如果要在元素的文本中包含该字符串时选择元素,可以使用:contains选择器(如注释中所述):

代码语言:javascript
复制
var category = $('span:contains("Category:")').next().text();

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

代码语言:javascript
复制
var category = $('span').filter(function() {
  return $(this).text().indexOf('Category:') > -1;
}).next().text();
票数 49
EN

Stack Overflow用户

发布于 2020-11-02 17:16:27

一个更简单的解决方案是:

代码语言:javascript
复制
var category = $('span:contains("Category:") + span').text()

这是css加上:contains伪代码,它是jQuery的一部分,并由cheerio支持。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34709765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档