Parsing HTML en Node.js : TOP bibliothèques et exemples de code

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Parsing HTML en JavaScript (Node.js) : Guide complet



Le parsing HTML est l'une des tâches clés lors du développement de parseurs (web scraper's) et de l'automatisation de la collecte de données. Dans l'écosystème Node.js, il existe plusieurs bibliothèques puissantes permettant d'extraire des informations de documents HTML. Dans cet article, nous allons examiner trois outils principaux : Cheerio, JSDOM et Puppeteer, comparer leurs fonctionnalités et fournir des exemples de code pratiques.



1. Cheerio — un jQuery léger pour le serveur



Cheerio est la bibliothèque la plus populaire pour le parsing HTML en Node.js. Elle implémente la syntaxe jQuery, mais fonctionne sans environnement de navigateur, ce qui la rend rapide et économe en mémoire. Cheerio est parfait pour les pages HTML statiques où l'exécution de JavaScript n'est pas nécessaire.



Installation

npm install cheerio


Exemple d'utilisation

const cheerio = require('cheerio');const axios = require('axios');

async function parsePage(url) { const response = await axios.get(url); const $ = cheerio.load(response.data);

// Extraction du titre de la page const title = $('h1').text().trim();

// Collecte de tous les liens const links = []; $('a').each((i, el) => { const href = $(el).attr('href'); if (href) links.push(href); });

return { title, links };}

// UtilisationparsePage('https://example.com').then(data => console.log(data));


Quand choisir Cheerio :

  • Pages statiques sans contenu dynamique
  • Exigences élevées en matière de performance
  • Syntaxe jQuery simple
  • Pas besoin de rendu JavaScript


2. JSDOM — une implémentation DOM complète



JSDOM émule un environnement de navigateur, créant un modèle DOM complet. Contrairement à Cheerio, JSDOM prend en charge l'exécution de JavaScript, ce qui permet de parser les pages dont le contenu est généré par des scripts. Cependant, cela a un coût en termes de fonctionnalités — la bibliothèque consomme plus de ressources.



Installation

npm install jsdom


Exemple d'utilisation

const { JSDOM } = require('jsdom');

async function parseDynamicPage(html) { const dom = new JSDOM(html, { runScripts: 'dangerously', resources: 'usable' });

const document = dom.window.document;

// Attente de l'exécution des scripts await new Promise(resolve => setTimeout(resolve, 2000));

const items = []; document.querySelectorAll('.product-item').forEach(el => { items.push({ name: el.querySelector('.product-name')?.textContent, price: el.querySelector('.price')?.textContent }); });

return items;}

// Exemple avec transmission de HTMLconst html = `<html><body><div class="product-item">...</div></body></html>`;parseDynamicPage(html).then(data => console.log(data));


Quand choisir JSDOM :

  • Pages avec contenu dynamique (AJAX, React, Vue)
  • Nécessité de travailler avec des événements DOM
  • Test d'applications web
  • Extraction de données à partir de SPA (Single Page Application)


3. Puppeteer — un navigateur piloté par code



Puppeteer est un navigateur headless complet (Chrome/Chromium) avec un contrôle programmatique. Il exécute JavaScript, charge les ressources, gère les cookies et les sessions. Puppeteer est l'outil le plus puissant, mais aussi le plus lourd en ressources.



Installation

npm install puppeteer


Exemple d'utilisation

const puppeteer = require('puppeteer');

async function parseWithBrowser(url) { const browser = await puppeteer.launch({ headless: true }); const page = a

Recommendations