使用cheerio在没有孩子的父母中获取文本

时间:2013-12-30 03:29:18

标签: jquery html node.js cheerio

我试图只使用cheerio来提取div的内容 - 没有任何div的孩子。如果我只使用div.text() - 我得到所有文本 - 父和子。这是HTML - 我只想要值“5.25”

以下代码目前返回“购买价格$ 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());
});

3 个答案:

答案 0 :(得分:12)

任何人仍然想知道如何在Cheerio中这样做:

$('div.classname').first().contents().filter(function() {
    return this.type === 'text';
}).text();

答案 1 :(得分:2)

我最喜欢这个:

$('div.cost').children().remove().end().text();

我发现更简洁(不了解效率)。

source

runkit

答案 2 :(得分:0)

我用过这篇文章

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;
});