Y a-t-il quelque chose comme le nokogiri de Ruby sur nodejs? Je veux dire un analyseur HTML convivial.
J'avais vu sur la page des modules Node.js quelques analyseurs, mais je ne trouve pas quelque chose de joli et de frais.
Y a-t-il quelque chose comme le nokogiri de Ruby sur nodejs? Je veux dire un analyseur HTML convivial.
J'avais vu sur la page des modules Node.js quelques analyseurs, mais je ne trouve pas quelque chose de joli et de frais.
Réponses:
Si vous voulez construire DOM, vous pouvez utiliser jsdom .
Il y a aussi cheerio , il a l' interface jQuery et il est beaucoup plus rapide que les anciennes versions de jsdom, bien que ces jours-ci, leurs performances soient similaires.
Vous voudrez peut-être jeter un œil à htmlparser2 , qui est un analyseur de streaming, et selon son benchmark, il semble être plus rapide que les autres, et pas de DOM par défaut. Il peut également produire un DOM, car il est également fourni avec un gestionnaire qui crée un DOM. C'est l'analyseur utilisé par cheerio.
parse5 ressemble également à une bonne solution. Il est assez actif (11 jours depuis le dernier commit à partir de cette mise à jour), conforme à WHATWG, et est utilisé dans jsdom , Angular et Polymer .
Et si vous souhaitez analyser HTML pour le scraping Web , vous pouvez utiliser YQL 1 . Il existe un module de nœud pour cela. YQL, je pense que ce serait la meilleure solution si votre code HTML provient d'un site Web statique , car vous comptez sur un service, pas sur votre propre code et votre propre puissance de traitement. Notez que cela ne fonctionnera pas si la page n'est pas autorisée par le robot.txt du site Web, YQL ne fonctionnera pas avec.
Si le site Web que vous essayez de gratter est dynamique, vous devez utiliser un navigateur sans tête comme phantomjs . Jetez également un œil aux casperjs , si vous envisagez des phantomjs. Et vous pouvez contrôler les casperjs à partir du nœud avec SpookyJS .
À côté des fantômes, il y a des zombies . Contrairement aux phantomjs qui ne peuvent pas être intégrés dans nodejs, zombiejs n'est qu'un module de noeud.
Il y a un nettuts + toturial pour ces dernières solutions.
1 Depuis août 2014, la bibliothèque YUI, qui est une exigence pour YQL, n'est plus activement gérée, source
Essayez https://github.com/tmpvar/jsdom - vous lui donnez du HTML et il vous donne un DOM.
Vous pouvez également jeter un œil à la radiographie: https://github.com/lapwinglabs/x-ray