Puppeteer pour JavaScript (Node.js) : guide complet avec exemples
1. Qu'est-ce que Puppeteer et pourquoi l'utiliser ?
Puppeteer est une bibliothèque pour Node.js qui offre une API de haut niveau pour contrôler le navigateur Chrome (ou Chromium) via le protocole DevTools Protocol. Par défaut, Puppeteer fonctionne en mode headless (sans interface graphique), ce qui en fait un outil idéal pour automatiser des tâches web côté serveur. Cependant, il est possible de lancer un navigateur complet avec interface pour le débogage si nécessaire.
Les principaux cas d'utilisation de Puppeteer incluent : le web scraping (extraction de données de sites dynamiques utilisant JavaScript), les tests automatisés d'applications web (tests e2e), la génération de captures d'écran et de PDF de pages, l'émulation d'actions utilisateur (clics, remplissage de formulaires, navigation), ainsi que le suivi des performances des pages web. Contrairement aux simples requêtes HTTP, Puppeteer exécute le JavaScript de la page, permettant ainsi d'obtenir du contenu généré dynamiquement.
La bibliothèque est activement maintenue par l'équipe Google et utilisée en production par des milliers d'entreprises. Puppeteer offre un contrôle total sur le navigateur : de la gestion des onglets et de l'interception des requêtes réseau à l'émulation d'appareils mobiles et de géolocalisation. C'est un outil polyvalent qui remplace tout un ensemble d'utilitaires pour travailler avec le contenu web.
2. Installation
Pour installer Puppeteer via npm (Node Package Manager), exécutez la commande suivante dans le terminal à la racine de votre projet :
npm install puppeteer
Cette commande télécharge la bibliothèque et télécharge automatiquement une version compatible de Chromium (environ 300-400 Mo). Si vous souhaitez utiliser un Chrome/Chromium déjà installé sur votre système, installez puppeteer-core :
npm install puppeteer-core
Avec puppeteer-core, vous devrez spécifier le chemin vers l'exécutable du navigateur au lancement. La bibliothèque nécessite Node.js version 18.0.0 ou supérieure (version LTS recommandée).
3. Démarrage rapide — exemple minimal fonctionnel
Créez un fichier example.js et ajoutez le code suivant, qui prend une capture d'écran d'une page web :
const puppeteer = require('puppeteer');
(async () => {
// Lancement du navigateur
const browser = await puppeteer.launch();
// Ouverture d'une nouvelle page
const page = await browser.newPage();
// Navigation vers le site
await page.goto('https://example.com');
// Prise de capture d'écran
await page.screenshot({ path: 'example.png' });
// Fermeture du navigateur
await browser.close();
})();
Exécutez le script avec la commande node example.js. Un fichier example.png apparaîtra dans le dossier, contenant la capture d'écran de la page example.com. C'est un exemple minimal mais parfaitement fonctionnel d'automatisation de navigateur.
4. Méthodes / fonctions / classes principales
Voici 8 méthodes et classes clés de Puppeteer avec description et exemples de code.
4.1. puppeteer.launch()
Signature : puppeteer.launch([options]) → Promise<Browser>
Fonction : Lance une instance du navigateur Chromium/Chrome. Accepte un objet d'options (headless, slowMo, args, etc.). Retourne un objet Browser.
const browser = await puppeteer.launch({
headless: false, // Afficher le navigateur
slowMo: 100, // Ralentir les actions (ms)
args: ['--window-size=1920,1080']
}); Aussi dans la bibliothèque
ORM pour Kotlin : comparaison et exemples (Exposed, Ktorm, Hibernate)
Configuration des applications Kotlin : bibliothèques, approches et outils
Configuration des applications PHP : bibliothèques et outils pour un paramétrage flexible
Travailler avec les dates en JavaScript (Node.js) : les meilleures bibliothèques