Aller au contenu principal
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.

Scraping web

Web scraping automobile : suivre les prix des voitures et des pièces sur AutoScout24, Mobile.de, Leboncoin et Autodoc

Comment les plateformes de pricing automobile utilisent les API de scraping pour surveiller les annonces de véhicules d'occasion sur AutoScout24, Mobile.de et Leboncoin, et les prix des pièces sur les 30+ boutiques nationales d'Autodoc. Pipeline, exemples API et script Python.

Josselin Liebe
Josselin Liebe
Lire
Scraping web

Web scraping et brand protection : traquer la contrefaçon sur AliExpress, Alibaba et Amazon

Comment les plateformes de brand protection utilisent les API de scraping pour détecter les contrefaçons, documenter les vendeurs et surveiller les remises en ligne sur AliExpress, Alibaba, Amazon et d'autres marketplaces. Pipeline, exemples API et script Python.

Josselin Liebe
Josselin Liebe
Lire
Scraping web

Migrer depuis NetNut : que faire après la neutralisation du réseau

Google a pris des mesures contre le réseau de proxies NetNut/Popa, avec le FBI et Lumen. Comment repenser votre stack scraping sans gérer de proxies vous-même.

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.

  • +500 crédits
  • Aucune carte bancaire requise
  • Tous les endpoints inclus