Могу ли я добавить больше селекторов jquery к cheerio? (Node.js)

0

Я играл с cheerio, и я заметил, что он, похоже, не поддерживает определенные селекторы, указанные в ссылке jquery, в частности ": odd" и ": even". Есть ли способ использовать их, импортируя пакет jquery в мою программу? Или это то, что должно быть реализовано в коде cheerio?

Вот мой код:

//var request = require('request');
var cheerio = require('cheerio');
var jquery = require('./jquery-1.10.2');

var fs = require('fs');

    $ = cheerio.load(fs.readFileSync('c:/java/bushkill_mls.html'));

    var odds = [];
    var evens = [];

    $('tr:odd').each(function() {
        odds = odds.concat($(this).text());

        });
        console.log(odds);

Вы можете увидеть, что я попытался импортировать jquery, но я не смог пройти его импорт, не получив ошибку "окно не определено", поэтому очевидно, что это похоже на проблему совместимости узлов. Так есть ли способ увеличить селекторную библиотеку в cheerio или, возможно, импортировать другой модуль, который имеет функции селектора jQuery, которые мне нужны?

Теги:
cheerio

2 ответа

0
Лучший ответ

Вы можете добавить что-то простое в cheerio вот так:

var cheerio = require('cheerio');

cheerio.prototype.odd = function() {
    var odds = [];
    this.each(function(index, item) {
        if (index % 2 == 1) {
            odds.push(item);
        }
    });

    return cheerio(odds);
}

var $ = cheerio.load("<div>0</div><div>1</div><div>2</div><div>3</div><div>4</div>");
$("div").odd().each(function() {
    console.log($(this).text());
});

Да, это точно не соответствует jquery, но похоже на то, как cheerio имеет дело с jQuery :eq(n).

  • 0
    хм, так что, если я правильно понял, я могу последовательно индексировать все <td> самостоятельно, а затем выбирать все нечетные и четные из этого нового индекса. Это отличная идея, но как бы я последовательно проиндексировал все <td> ?? (Я все еще довольно новичок в JavaScript)
  • 0
    Я только что понял, что могу добавить все элементы td в массив и посчитать их таким образом. Спасибо за помощь, человек!
0

Чтобы ответить на другую часть вашего вопроса:

импортировать другой модуль, который имеет функции селектора jquery, которые мне нужны?

Что бы вы не могли сделать с cheerio, вы можете сделать с jsdom. Он реализует полный DOM и позволяет вам вводить jQuery и другие библиотеки.

Как недостаток, он замедляет ваш код и занимает гораздо больше памяти, поэтому его лучше использовать только тогда, когда нет другой альтернативы, например: когда вам нужно больше делать, чем простой синтаксический анализ html.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню