Puis-je ajouter plus de sélecteurs jquery à cheerio? (Node.js)

J'ai joué avec cheerio et j'ai remarqué qu'il ne semble pas supporter certains sélecteurs spécifiés dans la référence jquery, spécifiquement ": impair" et ": even". Existe-t-il un moyen de les utiliser en important le paquet jquery dans mon programme? Ou est-ce que cela doit être mis en œuvre dans le code cheerio?

Voici mon code:

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

Vous pouvez voir que j'ai essayé d'importer jquery mais je ne pouvais pas passer l'importation sans avoir l'erreur "La fenêtre n'est pas définie", donc évidemment, cela semble être un problème de compatibilité de nœud. Est-il possible d'augmenter la bibliothèque sélecteur dans cheerio ou peut-être d'importer un autre module qui possède les fonctions de sélecteur jquery dont j'ai besoin?

Vous pouvez ajouter quelque chose de simple à cheerio comme ceci:

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

Oui, cela ne correspond pas exactement à jquery, mais il est similaire à la façon dont cheerio traite avec le sélecteur :eq(n) jquery's.

Pour répondre à l'autre partie de votre question:

Importer un autre module qui possède les fonctions du sélecteur jquery dont j'ai besoin?

Quoi que vous ne pouvez pas faire avec cheerio, vous pouvez le faire avec jsdom . Il implémente le DOM complet et vous permet d'injecter jQuery et d'autres bibliothèques.

À titre de baisse, cela ralentit votre code et prend beaucoup plus de mémoire, donc il est mieux utilisé uniquement lorsqu'il n'y a pas d'autre alternative, par exemple: lorsque vous avez plus à faire que l'analyse par HTML simple.