Comment parsingr une page HTML avec Node.js

Je dois parsingr (côté serveur) de grandes quantités de pages HTML.
Nous sums tous d’accord pour dire que regexp n’est pas la voie à suivre.
Il me semble que javascript est le moyen natif d’parsingr une page HTML, mais cette hypothèse repose sur le code côté serveur ayant toutes les fonctionnalités de DOM javascript à l’intérieur d’un navigateur.

Node.js a-t-il cette capacité intégrée?
Existe-t-il une meilleure approche à ce problème, en analysant le code HTML du côté serveur?

Vous pouvez utiliser les modules npm jsdom et htmlparser pour créer et parsingr un DOM dans Node.JS.

Les autres options incluent:

  • BeautifulSoup pour python
  • vous pouvez convertir votre HTML en xhtml et utiliser XSLT
  • HTMLAgilityPack pour .NET
  • CsQuery pour .NET (mon nouveau favori)
  • Les moteurs spidermonkey et rhino JS sont compatibles avec E4X. Cela peut être utile uniquement si vous convertissez votre HTML en xhtml.

Parmi toutes ces options, je préfère utiliser l’option Node.js, car elle utilise les méthodes d’access standard du DOM W3C et je peux réutiliser le code sur le client et le serveur. Je souhaite que les méthodes de BeautifulSoup soient plus similaires à celles du W3C, et je pense que la conversion de votre HTML en XHTML pour écrire du XSLT est tout simplement sadique.

Utilisez Cheerio . Il n’est pas aussi ssortingct que jsdom et est optimisé pour le grattage. En bonus, utilise les sélecteurs jQuery que vous connaissez déjà.

❤ Syntaxe familière: Cheerio implémente un sous-ensemble de core jQuery. Cheerio supprime toutes les incohérences du DOM et les navigateurs de la bibliothèque jQuery, révélant son API vraiment magnifique.

fast Extrêmement rapide: Cheerio fonctionne avec un modèle DOM très simple et cohérent. Par conséquent, l’parsing, la manipulation et le rendu sont incroyablement efficaces. Des tests préliminaires de bout en bout suggèrent que cheerio est environ 8 fois plus rapide que JSDOM.

Flexible Extrêmement flexible: Cheerio fait le tour de htmlparser. Cheerio peut parsingr presque tout document HTML ou XML.

Utilisez htmlparser2 , c’est beaucoup plus rapide et assez simple. Consultez cet exemple d’utilisation:

https://www.npmjs.org/package/htmlparser2#usage

Et la démo live ici:

http://demos.forbeslindesay.co.uk/htmlparser2/

Htmlparser2 par FB55 semble être une bonne alternative.

jsdom est trop ssortingct pour faire un vrai écran, mais beautifulsoup ne s’embarrasse pas du balisage.

node-soupselect est un port de beautifulsoup de python dans nodejs, et il fonctionne à merveille

Dans .NET, il y a le HTML Agility Pack , une bibliothèque d’parsing HTML extrêmement solide.