web-dev-qa-db-fra.com

Analyseur HTML sur Node.js

Existe-t-il quelque chose comme nokogiri de Ruby sur nodejs? Je veux dire un analyseur HTML convivial.

J'avais déjà vu sur la page des modules de Node.js des analyseurs, mais je ne trouve pas quelque chose de joli et de frais.

189
asci

Si vous voulez construire DOM vous pouvez utiliser jsdom .

Il y a aussi cheerio , il a l'interface jQuery et c'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 oeil à htmlparser2 , qui est un analyseur de flux en continu, et selon son critère de référence, 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 semble également être une bonne solution. Il est assez actif (11 jours depuis le dernier commit à compter de cette mise à jour), conforme à WHATWG et utilisé dans jsdom , Angular , et Polymer =.

Et si vous voulez analyser HTML pour Web scraping , vous pouvez utiliser YQL . Il y a un module de noeud pour cela. Je pense que YQL serait la meilleure solution si votre code HTML provient d’un site Web statique , puisque vous comptez sur un service, et non sur votre propre code et sur votre puissance de traitement. Notez que cela ne fonctionnera pas si la page n'est pas autorisée par le fichier robot.txt du site Web, YQL ne fonctionnera pas avec elle.

Si le site Web que vous essayez de gratter est dynamique , vous devriez utiliser un navigateur sans navigateur comme phantomjs . Regardez aussi casperjs , si vous envisagez de créer phantomjs. Et vous pouvez contrôler les casperjs depuis le noeud avec SpookyJS .

A côté de phantomjs, il y a zombiejs . Contrairement aux phantomjs qui ne peuvent pas être intégrés dans nodejs, zombiejs n'est qu'un module de nœud.

Il y a un nettuts + toturial pour ces dernières solutions.

431

Essayez https://github.com/tmpvar/jsdom - vous lui donnez du code HTML et vous obtenez un DOM.

12
thejh

Vous pouvez également jeter un coup d'œil à la radiographie: https://github.com/lapwinglabs/x-ray

6
png