使用cheerio在没有孩子的父母中获取文本
Posted
技术标签:
【中文标题】使用cheerio在没有孩子的父母中获取文本【英文标题】:Get text in parent without children using cheerio 【发布时间】:2014-01-16 22:44:09 【问题描述】:我正在尝试仅提取 div 的内容 - 没有该 div 的任何子项 - 使用cheerio。如果我只使用 div.text() - 我会得到所有的文本 - 父母和孩子。这是 html - 我只想要值“5.25”
下面的代码目前返回“Purchase price $5.25”
下面的 HTML:
<div class="outer tile">
< ... various other html here >
<div class="cost">
<span class="text">Purchase price </span>
<small>$</small>5.25
</div>
</div>
下面是相关node.js CHEERIO代码的摘录:
var $ = cheerio.load(data);
$("div.outer.tile").each(function(i, e)
var price = $(e).find('div.price');
console.log(price.text());
);
【问题讨论】:
【参考方案1】:还有人想知道如何在 Cheerio 中做到这一点:
$('div.classname').first().contents().filter(function()
return this.type === 'text';
).text();
【讨论】:
【参考方案2】:我最喜欢这个:
$('div.cost').children().remove().end().text();
我觉得更简洁(不知道效率)。
source
runkit
【讨论】:
请注意,此答案与评分最高的答案不同,它修改了底层的cheerio 对象并将删除 div 的内容【参考方案3】:我用过这篇文章
Get the text after span element using jquery
作为提琴的参考
http://jsfiddle.net/TKwhY/
这对我来说是新的,但您可以通过仅返回 nodeType 3 的元素来获取文本节点
var a = $('.cost').first().contents().filter(function()
return this.nodeType == 3;
);
【讨论】:
以上是关于使用cheerio在没有孩子的父母中获取文本的主要内容,如果未能解决你的问题,请参考以下文章
使用 Doctrine Extensions Tree Nested 集在父母中获取孩子的帖子
在 Python 的 Playwright 中,我如何获取与 ElementHandle 相关的元素(孩子、父母、祖父母、兄弟姐妹)?