2016-07-02 2 views
1

Этот jQuery, как селектор «cheerio», пытается получить комментарии от узлов комментариев на странице html.
$ - объект cheerio. Как это можно сделать? БлагодаряПолучить текст элемента комментария с помощью селектора черри

console.log($('*').contents().length); //reports back more than 1000 


$('*').contents().filter(function() { 
    if (this.nodeType == 8) { 

    //the following gives null for every node found 
    console.log($(this).html()); 

    //the following gives blank for every node found 
    console.log($(this).text()); 
    } 
}); 

ответ

2

Содержание комментария не как HTML (.innerHTML) или значение (.value), это .nodeValue. JQuery не обеспечивает функцию, чтобы получить, что для вас, и я сомневаюсь, что Cheerio делает либо, но вам не нужен: Просто используйте this.nodeValue:

$('*').contents().filter(function() { 
    if (this.nodeType == 8) { 
    console.log(this.nodeValue); 
    } 
}); 

(я использовал filter там, потому что ваш пример сделал, но если вы не используете возвращаемое значение filter, each имеет смысл)

Вот пример DOM, но предположительно Cheerio будет работать так же:.

$("*").contents().each(function() { 
 
    if (this.nodeType === 8) { 
 
    console.log(this.nodeValue); 
 
    } 
 
});
<!-- Comment 1 --> 
 
<!-- Comment 2 --> 
 
<!-- Comment 3 --> 
 
<!-- Comment 4 --> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

Смежные вопросы