Skip to main content
Piloterr
Retour au blog
13 juillet 2025

Puppeteer : bibliothèque Node.js de web scraping pour JavaScript

Dans le paysage web moderne, les clients HTTP traditionnels montrent souvent leurs limites face aux sites riches en JavaScript, aux applications monopages (SPA) et au contenu dynamique. Puppeteer est une bibliothèque Node.js puissante qui fournit une API de haut niveau pour contrôler Chrome ou Chromium par programmation. Contrairement aux outils de scraping conventionnels qui ne gèrent que du HTML statique, Puppeteer rend les pages comme un navigateur réel, ce qui le rend idéal pour scraper les applications web modernes. Consultez le projet sur Github.

Évitez la gestion navigateur avec les API navigateur headless: comparez Piloterr vs ScraperAPI.

Qu'est-ce que Puppeteer ?

Puppeteer est une bibliothèque Node.js développée par Google qui fournit une API de haut niveau pour contrôler Chrome ou Chromium en mode headless. Elle peut aussi être configurée en mode complet (non headless) pour le débogage. Puppeteer permet d'automatiser la soumission de formulaires, les tests UI, la saisie clavier et, surtout pour nos besoins, le web scraping de contenu rendu en JavaScript.

Développé par l'équipe Chrome DevTools, Puppeteer offre un contrôle fin de l'instance navigateur, permettant d'intercepter les requêtes réseau, d'injecter du JavaScript, de prendre des captures d'écran, de générer des PDF et d'extraire des données depuis des applications web complexes que les scrapers traditionnels ne peuvent pas traiter.

Fonctionnalités clés

Automatisation navigateur complète

  • Exécution JavaScript : support complet des sites riches en JavaScript
  • Manipulation DOM : interaction avec les éléments, clics, remplissage de formulaires
  • Interception réseau : surveillance et modification des requêtes réseau
  • Gestion des cookies : gestion automatique des cookies et des sessions

Capacités de scraping avancées

  • Contenu dynamique : gestion du défilement infini, lazy loading et requêtes AJAX
  • Captures et PDF : génération de captures visuelles et de documents
  • Émulation mobile : simulation d'appareils mobiles et de viewports
  • Géolocalisation : simulation de différentes localisations géographiques

Performance et contrôle

  • Mode headless : exécution sans interface pour de meilleures performances
  • Blocage de ressources : blocage d'images, CSS, polices pour améliorer la vitesse
  • Interception de requêtes : modification des requêtes à la volée
  • Exécution concurrente : exécution simultanée de plusieurs instances navigateur

Cas d'usage

Applications SPA et React/Vue/Angular

Les applications web modernes chargent souvent le contenu dynamiquement via JavaScript. Puppeteer peut :

  • Attendre le chargement d'éléments spécifiques
  • Gérer le routage côté client
  • Interagir avec des composants UI complexes
  • Scraper des données n'apparaissant qu'après interaction utilisateur

Monitoring des prix e-commerce

  • Naviguer dans les catalogues produits
  • Gérer les images et avis en lazy loading
  • Automatiser la recherche et le filtrage
  • Extraire les informations de prix depuis des pages rendues en JavaScript

Scraping réseaux sociaux et actualités

  • Faire défiler des flux infinis
  • Gérer les flux d'authentification
  • Extraire commentaires et interactions
  • Surveiller les mises à jour de contenu en temps réel

Tests et assurance qualité

  • Tests UI automatisés
  • Monitoring des performances
  • Comparaisons de captures d'écran (chez Piloterr, nous avons un logiciel appelé Capturekit.dev pour les captures d'écran via API)
  • Tests de compatibilité multi-navigateurs

Démarrer

Installation

Bash
npm install puppeteer

Utilisation de base

Voici un exemple simple pour démarrer :

JavaScript
import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close();

Exemples avancés

Scraping de produits e-commerce

JavaScript
await page.goto('https://shop.example.com/products');
await page.waitForSelector('.product-card');
const products = await page.$$eval('.product-card', cards =>
  cards.map(card => ({
    name: card.querySelector('h2')?.textContent?.trim(),
    price: card.querySelector('.price')?.textContent?.trim(),
  }))
);

Bonnes pratiques

Gestion des ressources

Fermez toujours le navigateur à la fin :

JavaScript
const browser = await puppeteer.launch();
try {
  const page = await browser.newPage();
  // scraping logic
} finally {
  await browser.close();
}

Limitation de débit

Ajoutez des délais entre les requêtes pour réduire le risque de blocage :

JavaScript
await new Promise(r => setTimeout(r, 1000 + Math.random() * 2000));

Gestion mémoire

Bloquez les ressources lourdes si vous n'avez besoin que du HTML ou du JSON :

JavaScript
await page.setRequestInterception(true);
page.on('request', req => {
  if (['image', 'stylesheet', 'font'].includes(req.resourceType())) {
    req.abort();
  } else {
    req.continue();
  }
});

Comparaison avec d'autres outils de scraping

FeaturePuppeteerPlaywrightSeleniumCheerio
JavaScript Execution
Cross-Browser SupportChrome only
PerformanceHighHighMediumVery High
API SimplicityExcellentExcellentComplexSimple
Resource UsageMediumMediumHighLow
Dynamic Content
Learning CurveEasyEasySteepVery Easy

Dépannage

Fuites mémoire

Assurez-vous que chaque navigateur lancé est fermé, même en cas d'erreur :

JavaScript
browser.on('disconnected', () => console.error('Browser disconnected'));

Timeouts

Augmentez les timeouts de navigation pour les pages lentes :

JavaScript
await page.setDefaultNavigationTimeout(30000);

Évitement de la détection

Utilisez des paramètres réalistes de viewport et User-Agent, et masquez les indicateurs d'automatisation si nécessaire :

JavaScript
await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36');
await page.evaluateOnNewDocument(() => {
  Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
});

Vous pouvez aussi utiliser Piloterr pour votre projet de scraping, les API vous aidant à contourner les meilleurs anti-bots du marché.

Configuration Dockerfile recommandée

Dockerfile
FROM node:20-slim
RUN apt-get update && apt-get install -y chromium
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium

Conclusion

Puppeteer a révolutionné le web scraping en offrant aux développeurs une approche puissante basée sur le navigateur pour l'extraction de données. Sa capacité à gérer les sites riches en JavaScript, le contenu dynamique et les interactions utilisateur complexes en fait un outil indispensable pour les projets de scraping modernes.

L'API intuitive, les excellentes performances et l'ensemble complet de fonctionnalités permettent de construire des solutions de scraping sophistiquées capables de traiter les applications web les plus exigeantes. Du monitoring e-commerce à la collecte de données sur les réseaux sociaux, Puppeteer fournit les outils nécessaires pour extraire des informations précieux du web dynamique d'aujourd'hui.

Bien que Puppeteer consomme plus de ressources que les clients HTTP traditionnels, le compromis en vaut la peine pour les applications nécessitant l'exécution JavaScript et un comportement navigateur authentique. Sa capacité à contourner les mesures anti-bot et à gérer des flux d'authentification complexes le rend particulièrement précieux pour les projets de scraping de niveau entreprise.

À mesure que les applications web deviennent plus dépendantes de JavaScript et plus sophistiquées, des outils comme Puppeteer seront de plus en plus essentiels pour des initiatives de web scraping réussies. Le soutien de Google, le développement actif et la communauté solide garantissent que Puppeteer restera un choix de premier plan pour l'automatisation navigateur et le web scraping.

Ressources

À lire aussi

Guides et actualités sur le scraping web, les proxies et l'extraction de données.

Comment scraper les données salariales d'une entreprise avec Python

Apprenez à scraper les données salariales Comparably avec Python et Piloterr. Tutoriel complet avec code, gestion Angular et extraction JSON structurée.

Josselin Liebe
Josselin Liebe
Lire

Comment construire un jeu de données des employés d'une entreprise

Dans ce tutoriel, nous apprendrons à exploiter la précision des Google Dorks et la puissance d'automatisation des API Piloterr pour collecter des données publiques de profils LinkedIn. Le résultat final est un jeu de données .json structuré, prêt pour l'analyse.

Harivony Ratefiarison
Harivony Ratefiarison
Lire

5 outils de scraping Leboncoin en 2025 [No Code et Dev]

Cet article explore les cinq meilleurs outils adaptés au scraping Leboncoin, avec des informations pour les développeurs expérimentés comme pour les utilisateurs sans compétences en programmation. Nous abordons également la légalité de ces pratiques en France, conformément au code de la propriété intellectuelle.

Josselin Liebe
Josselin Liebe
Lire

Prêt à commencer ?

Votre API de scraping web est à un clic. Commencez avec +500 crédits, sans infrastructure à gérer, sans proxies à configurer, et sans carte bancaire.

Commencer gratuitement (+500 crédits)