Cheerio vs Puppeteer : Guide pour choisir le meilleur outil de Web Scraping

Suciu Dan le 11 avril 2023

blog-image

Vous vous demandez quel outil utiliser pour faire du web scraping ? Il peut être difficile de choisir entre toutes les options disponibles, mais ne vous inquiétez pas - je suis là pour vous aider. Dans cet article, nous allons examiner de plus près Cheerio et Puppeteer, deux outils populaires pour le web scraping.

Cheerio est une bibliothèque permettant d'analyser et de manipuler des documents HTML, tandis que Puppeteer est une bibliothèque permettant de contrôler un navigateur Chrome sans tête. Cheerio vous permet de sélectionner des éléments en utilisant une syntaxe similaire à jQuery, tandis que Puppeteer peut être utilisé pour des tâches telles que le web scraping, les tests et l'automatisation des soumissions de formulaires.

Alors, plongeons dans le vif du sujet !

Qu'est-ce que Cheerio ?

Cheerio est une bibliothèque JavaScript qui analyse et manipule les documents HTML. Elle permet de sélectionner, de modifier et d'effectuer des actions sur les éléments d'un document à l'aide d'une syntaxe similaire à celle de jQuery.

Cheerio est léger et facile à utiliser, ce qui en fait un bon choix pour les tâches simples de web scraping. Il est également plus rapide que l'utilisation d'un navigateur complet comme Chrome ou Firefox, car il n'a pas besoin de charger toutes les ressources. Il est donc idéal pour extraire des données d'un document HTML.

Cheerio possède de nombreuses fonctionnalités et avantages qui en font un choix populaire pour le web scraping. Voici quelques-uns des principaux avantages et fonctionnalités de Cheerio :

  • Léger et facile à utiliser: Cheerio est conçu pour être léger et facile à utiliser, ce qui en fait un excellent choix pour les tâches simples de web scraping. Sa syntaxe est similaire à celle de jQuery, que de nombreux développeurs connaissent bien, et il permet de sélectionner et de manipuler des éléments dans un document HTML en quelques lignes de code seulement.
  • Rapide : Cheerio est plus rapide que l'utilisation d'un navigateur complet pour le web scraping, car il n'a pas à charger tous les actifs et ressources d'un navigateur. C'est donc un bon choix pour les tâches où la rapidité est importante.
  • Prise en charge des documents HTML et XML: Cheerio peut analyser et manipuler des documents HTML et XML, ce qui vous permet de travailler avec différents types de documents selon vos besoins.
  • Peut être utilisé en combinaison avec d'autres outils: Cheerio peut être utilisé en combinaison avec d'autres outils tels que Fetch API ou Axios pour effectuer des tâches de web scraping. Cela vous permet d'adapter votre flux de travail à vos besoins spécifiques et d'utiliser les meilleurs outils pour ce travail.

Qu'est-ce que le marionnettiste ?

Puppeteer est une bibliothèque Node.js qui fournit une API de haut niveau pour contrôler un navigateur Chrome sans tête. Elle vous permet d'automatiser des tâches dans Chrome sans ouvrir de fenêtre Chrome, ce qui réduit le nombre de ressources consommées par votre scraper.

Vous pouvez utiliser Puppeteer pour effectuer des actions telles que remplir des formulaires, cliquer sur des boutons et extraire des données de sites web.

L'un des principaux avantages de Puppeteer est qu'il vous permet d'interagir avec les sites web d'une manière similaire à celle d'un utilisateur humain. Il s'agit donc d'un bon choix pour les tâches nécessitant des interactions plus complexes avec un site web, telles que la connexion, la navigation dans les pages et le remplissage de formulaires.

Puppeteer possède plusieurs caractéristiques et avantages qui en font un choix populaire pour le web scraping et l'automatisation. Voici quelques-unes des principales caractéristiques et avantages de Puppeteer :

  • API de haut niveau: Puppeteer fournit une API de haut niveau facile à utiliser et à comprendre. C'est donc un bon choix pour les développeurs qui n'ont pas l'habitude de faire du web scraping ou de l'automatisation.
  • Contrôle d'un navigateur Chrome sans tête: Puppeteer vous permet de contrôler un navigateur Chrome sans tête, ce qui signifie que vous pouvez automatiser des tâches dans Chrome sans ouvrir de fenêtre Chrome. Cela en fait un bon choix pour les tâches qui nécessitent des interactions plus complexes avec un site web.
  • Imitation du comportement humain: Le marionnettiste peut imiter le comportement humain, comme cliquer sur des boutons, faire défiler des pages et remplir des formulaires. Il s'agit donc d'un bon choix pour les tâches nécessitant des interactions plus complexes avec un site web.
  • Prise en charge des fonctionnalités web modernes: Puppeteer prend entièrement en charge les fonctionnalités modernes du web telles que JavaScript, les cookies et les CAPTCHA. Il s'agit donc d'un bon choix pour les tâches qui nécessitent ces fonctionnalités.
  • Peut être utilisé en combinaison avec d'autres outils: Puppeteer peut être utilisé en combinaison avec d'autres outils tels que Cheerio pour effectuer des tâches de web scraping. Cela vous permet d'adapter votre flux de travail à vos besoins spécifiques et d'utiliser les meilleurs outils pour ce travail.

Différences entre Cheerio et Puppeteer

Cheerio et Puppeteer sont tous deux des outils populaires pour le web scraping, mais ils présentent des différences essentielles qui les rendent mieux adaptés à certaines tâches. Voici quelques-unes des principales différences entre Cheerio et Puppeteer :

  • Performance: Cheerio est généralement plus rapide que Puppeteer car il n'a pas à charger tous les actifs et ressources d'un navigateur. Cependant, Puppeteer a l'avantage de pouvoir interagir avec les sites web d'une manière similaire à celle d'un utilisateur humain, ce qui peut le rendre plus rapide pour certaines tâches.
  • Fonctionnalité: Cheerio est adapté aux tâches simples de web scraping qui impliquent l'extraction de données à partir de documents HTML ou XML. Puppeteer est plus puissant et peut automatiser des tâches dans un navigateur Chrome sans tête, telles que la connexion, la navigation dans les pages et le remplissage de formulaires.
  • Facilité d'utilisation: Cheerio a une syntaxe similaire à jQuery, qui est familier à de nombreux développeurs. Il est donc facile à utiliser pour ceux qui connaissent déjà jQuery. Puppeteer dispose également d'une API de haut niveau facile à utiliser, mais il nécessite davantage d'installation et de configuration que Cheerio.

Globalement, le choix entre Cheerio et Puppeteer dépendra des besoins spécifiques de votre tâche de web scraping. Si vous avez juste besoin d'extraire quelques données d'un document HTML et que les performances sont un problème, Cheerio pourrait être le meilleur choix. Si vous avez besoin d'automatiser, Puppeteer est le meilleur choix.

Vérification ou installation de Node.JS

Avant de commencer, assurez-vous que Node.JS est installé sur votre machine. La version de Node utilisée dans cet article est la 18.9.0. Exécutez cette commande pour vérifier votre version locale :

node -v

Si vous obtenez une erreur, téléchargez et installez Node.js depuis le site officiel. Cela installera également `npm`, le gestionnaire de paquets pour Node.js.

Mise en place du projet

Ouvrez le terminal et créez un nouveau dossier appelé `scraper`. Accédez au répertoire et lancez la commande npm init. Cela créera un fichier `package.json` pour votre projet contenant des métadonnées telles que le nom, la version et les dépendances.

Suivez les invites pour entrer des informations sur votre projet. Vous pouvez appuyer sur "Entrée" pour accepter les valeurs par défaut pour chaque invite, ou vous pouvez entrer vos valeurs comme vous le souhaitez.

Vous pouvez maintenant commencer à installer les dépendances et à créer des fichiers pour votre projet :

npm install cheerio puppeteer

Les dépendances seront installées dans le répertoire `node_modules` de votre projet et seront également ajoutées à la section dependencies de votre fichier `package.json`.

Définir un objectif

Pour cet article, nous allons récupérer un article d'ArsTechnica et extraire le titre de l'article, l'URL de l'image de couverture et le premier paragraphe du corps de l'article.

Cours accéléré de base sur l'extraction de données

Pour commencer, rendez-vous sur le site web cible et ouvrez un article. Cliquez avec le bouton droit de la souris sur le titre de l'article et sélectionnez "Inspecter". Cela ouvrira les outils de développement et mettra en évidence l'élément HTML pour la balise d'en-tête.

blog-image

Pour de bonnes pratiques de référencement, une page ne doit comporter qu'un seul élément H1. Par conséquent, h1 peut être utilisé comme un sélecteur fiable pour le titre.

Pour choisir le sélecteur de l'image de couverture, utilisez l'outil Inspecter. L'image est enveloppée dans une balise `figure`, c'est donc une bonne idée d'inclure l'élément parent dans le sélecteur. Le sélecteur final est `figure img`.

Enfin, nous devons trouver le sélecteur du premier paragraphe.

blog-image

Comme le premier paragraphe n'est pas le premier élément enfant du parent, un sélecteur CSS supplémentaire est nécessaire. L'élément parent possède une classe appelée `article-content`. Nous pouvons utiliser cette classe avec le sélecteur `:first-of-type` pour créer notre sélecteur final : `.article-content p:first-of-type`.

Voici la liste finale avec les sélecteurs :

  • Titre : `h1`
  • Image de couverture : `figure img`
  • Premier paragraphe : `.article-content p:first-of-type`

Construction du grattoir

Maintenant que nous avons les dépendances dans le projet, nous allons voir comment utiliser Cheerio vs Puppeteer ensemble pour construire un scraper web. En combinant ces deux outils, vous pouvez créer un scraper à la fois rapide et puissant, alors commençons !

Créez un fichier nommé `scrape.js` et collez-y le code suivant :

const puppeteer = require('puppeteer');

const cheerio = require('cheerio');

async function scrape() {

// Launch a headless Chrome browser

const browser = await puppeteer.launch();

// Create a new page

const page = await browser.newPage();

// Navigate to the website you want to scrape

await page.goto('https://arstechnica.com/tech-policy/2023/01/musk-led-twitter-faces-another-lawsuit-alleging-it-failed-to-pay-bills/');

// Wait for the page to load

await page.waitForSelector('h1');

// Extract the HTML of the page

const html = await page.evaluate(() => document.body.innerHTML);

// Use Cheerio to parse the HTML

const $ = cheerio.load(html);

// Extract the title, cover image, and paragraph using Cheerio's syntax

const title = $('h1').text();

const paragraph = $('.article-content p:first-of-type').text()

const coverImage = $('figure img').attr('src');

// Display the data we scraped

console.log({

title,

paragraph,

coverImage

});

// Close the browser

await browser.close();

}

scrape();

Vous pouvez exécuter le code à l'aide de la commande node scrape.js. La sortie doit afficher le titre de l'article et l'URL de l'image de couverture, et doit ressembler à ceci :

{

title: 'Lawsuit: Twitter failed to pay $136,000 in rent at San Francisco office tower',

paragraph: 'The Elon Musk-owned Twitter is facing another lawsuit alleging that it failed to pay its bills.',

coverImage: 'https://cdn.arstechnica.net/wp-content/uploads/2023/01/getty-musk-twitter-800x533.jpg'

}

Passer au niveau supérieur

Maintenant que vous avez appris à extraire des données de base d'une seule page Web à l'aide de Puppeteer et de Cheerio, il est temps de passer à la vitesse supérieure. Voici ce que vous pouvez faire pour transformer ce scraper de base en un scraper de pointe :

  • Récupération d'une catégorie entière: En modifiant l'URL et les sélecteurs dans votre code, vous pouvez récupérer les articles d'une catégorie. Cette fonction est utile pour récupérer de grandes quantités de données ou pour suivre les mises à jour d'une catégorie de contenu spécifique.
  • Utiliser un agent utilisateur différent pour chaque requête: En modifiant l'agent utilisateur de votre scraper, vous pouvez contourner les restrictions et mieux imiter le comportement humain. Cela peut être utile pour récupérer des sites web qui bloquent ou limitent les requêtes en fonction de l'agent utilisateur.
  • Intégrer un réseau proxy: Un réseau proxy peut vous aider à changer d'adresse IP et à éviter d'être détecté. C'est particulièrement utile pour le scraping de sites web qui bloquent les IP ou limitent le nombre de requêtes.
  • Résoudre les captchas: Certains sites web utilisent des captchas pour empêcher le scraping automatisé. Il existe plusieurs moyens de contourner les captchas, comme l'utilisation d'un service de résolution de captchas ou la mise en œuvre d'un modèle d'apprentissage automatique pour reconnaître et résoudre les captchas.

Pour conclure

Vous devriez maintenant avoir une bonne compréhension des forces et des limites de Cheerio et de Puppeteer, et vous devriez être en mesure de prendre une décision éclairée quant à celui qui répond le mieux à vos besoins. Il existe un outil de web scraping pour vous, que vous soyez un débutant ou un développeur expérimenté.

Si vous souhaitez approfondir votre connaissance de Cheerio, jetez un coup d'œil à cet article écrit par l'un de mes collègues. Il couvre des sujets tels que l'identification des nœuds à l'aide de l'élément Inspect, l'enregistrement des résultats sur le disque et le scraping d'un grand site comme Reddit de manière plus détaillée.

Nous n'avons fait qu'effleurer les capacités de Puppeteer. Si vous souhaitez en savoir plus, cet article va plus loin et couvre des sujets tels que la capture d'écran, la soumission d'un formulaire et le scraping de plusieurs pages.

Nous espérons que cet article vous a aidé à comprendre les choix qui s'offrent à vous et à prendre la meilleure décision pour vos besoins en matière de web scraping.

Une alternative encore plus simple

Bien que nous ayons discuté des forces et des limites de Cheerio et de Puppeteer, il existe une autre option que vous pouvez envisager : l'utilisation d'un scraper en tant que service tel que WebScrapingAPI.

L'utilisation d'un tel service présente plusieurs avantages :

  • Vous pouvez être sûr que le scraper est fiable et bien entretenu : le scraper dispose de ressources dédiées pour s'assurer qu'il est à jour et qu'il fonctionne correctement. Cela peut vous faire gagner beaucoup de temps et d'efforts par rapport à la construction et à la maintenance de votre propre scraper.
  • Un service de scraper web peut souvent être plus rentable que la création de votre propre scraper : vous n'aurez pas à investir dans le développement et la maintenance du scraper, et vous pourrez bénéficier de toutes les fonctions spéciales ou de l'assistance offertes par l'entreprise.
  • Être détecté ne sera plus un problème : un scraper web premium évite la détection et peut souvent gratter des sites web de manière plus efficace qu'un scraper que vous construisez vous-même. Cela vous permet de gagner du temps et de vous concentrer sur l'analyse et l'utilisation des données scrappées.

Nous vous encourageons à essayer notre scraper web et à constater par vous-même les avantages de l'utilisation d'un outil fiable et de confiance. Créez un compte gratuit maintenant.

Nouvelles et mises à jour

Restez au courant des derniers guides et nouvelles sur le web scraping en vous inscrivant à notre lettre d'information.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Articles connexes

vignette
La science du Web ScrapingLe Web Scraping en toute simplicité : l'importance de l'analyse des données

Découvrez comment extraire et organiser efficacement des données pour le web scraping et l'analyse de données grâce à l'analyse de données, aux bibliothèques d'analyse HTML et aux métadonnées schema.org.

Suciu Dan
avatar de l'auteur
Suciu Dan
12 minutes de lecture
vignette
Cas d'utilisationXPath et les sélecteurs CSS

Les sélecteurs XPath sont-ils meilleurs que les sélecteurs CSS pour le web scraping ? Découvrez les points forts et les limites de chaque méthode et faites le bon choix pour votre projet !

Mihai Maxim
avatar de l'auteur
Mihai Maxim
8 minutes de lecture
vignette
GuidesComment construire un scraper et télécharger un fichier avec Puppeteer

Découvrez 3 façons de télécharger des fichiers avec Puppeteer et construisez un scraper web qui fait exactement cela.

Mihnea-Octavian Manolache
avatar de l'auteur
Mihnea-Octavian Manolache
8 minutes de lecture