Les 5 meilleures bibliothèques JavaScript pour le Web Scraping
Robert Sfichi le 03 avril 2021
Avec l'évolution de l'ère informatique, les gens ont développé un grand nombre de techniques utiles qui peuvent créer des ensembles de données gigantesques. L'une de ces techniques, appelée web scraping, est très fréquemment utilisée par les data scientists, les statisticiens, les informaticiens et les développeurs de logiciels pour recueillir des informations précieuses sur un sujet spécifique.
La technique du web scraping peut être réalisée de différentes manières en utilisant divers outils tels que des API, des extensions de navigateur, des frameworks, etc. Mais cet article se concentre sur la dernière catégorie d'outils mentionnée.
Étant l'un des langages de programmation les plus fréquemment utilisés pour développer des logiciels, JavaScript dispose d'un grand nombre de bibliothèques qui peuvent vous aider à recueillir les données dont vous avez besoin.
A cet égard, nous aimerions vous proposer nos recommandations pour les 5 bibliothèques JavaScript les plus utiles en termes de web scraping.
Une brève introduction au web scraping
Comme son nom l'indique, un scraper web est un logiciel qui parcourt différentes pages web afin d'en extraire des données, telles que des chaînes de caractères, des nombres ou des pièces jointes.
Il s'agit d'une meilleure alternative au copier-coller d'informations d'une page web dans une feuille de calcul. Au lieu de faire cela, un programme informatique peut le faire pour vous. C'est beaucoup plus rapide et probablement plus précis. Il est évident que sans lui, nous devrions travailler beaucoup plus pour obtenir les mêmes résultats.
Cas d'utilisation du scraping web
Les gens utilisent des scrappeurs web pour toutes sortes de raisons. Les cas d'utilisation les plus courants sont les suivants :
- Génération de leads
- Comparaison des prix
- Analyse du marché
- Recherche universitaire
- Audit SEO et recherche de mots-clés
- Création d'ensembles de données d'entraînement et de test pour les processus d'apprentissage automatique
Une entreprise de commerce électronique peut utiliser un scraper web pour recueillir des informations sur les photos, les caractéristiques ou les descriptions d'un produit rédigées par des concurrents afin d'avoir une meilleure vue d'ensemble du marché.
GPT-3 est considéré comme l'un des outils logiciels les plus puissants sur le marché à l'heure actuelle. Les scripts d'apprentissage automatique fonctionnent mieux lorsqu'ils sont alimentés par une grande quantité de données. Cependant, cela peut prendre des heures, voire des jours. Les scientifiques des données peuvent utiliser l'aide fournie par les web scrapers pour rassembler tous les ensembles de données dont ils ont besoin afin d'entraîner les modèles d'apprentissage automatique.
Préparez votre espace de travail
Pour pouvoir utiliser les bibliothèques suivantes, vous devez vous assurer que vous avez installé Node.js sur votre machine. Vérifiez-le en lançant la commande suivante dans une nouvelle fenêtre de terminal :
node -v
Si vous avez installé Node.js, vous devriez voir la version apparaître sur la ligne suivante. Cela ressemblera à quelque chose comme ceci :
v14.15.0
Si vous avez reçu la confirmation de l'installation de Node.js, passez à la section suivante. Pour ceux d'entre vous qui n'ont pas encore installé Node.js, nous allons suivre le processus d'installation dès maintenant.
Tout d'abord, rendez-vous sur le site web de Node.js et téléchargez la dernière version (14.16.0 au moment de la rédaction de cet article). Cliquez sur le bouton "Recommandé pour la plupart des utilisateurs" et attendez la fin du téléchargement. Lancez le programme d'installation une fois le téléchargement terminé.
Une fois l'installation terminée, vous pouvez vérifier la version de Node.js en exécutant la commande suivante dans une nouvelle fenêtre de terminal :
node -v
Après quelques secondes, vous devriez voir la version de Node.js que vous avez installée.
Top 5 des outils JavaScript utilisés pour le web scraping
Axios
Axios est l'une des bibliothèques JavaScript les plus populaires, utilisée pour effectuer des requêtes HTTP directement à partir d'un environnement Node.js. En utilisant Axios, nous pouvons également télécharger facilement des données sans avoir à transmettre les résultats de la requête HTTP à la méthode .json(). Il va sans dire qu'Axios est un outil très puissant pour le web scraping.
Pour installer Axios, exécutez la commande suivante dans le dossier du projet :
npm i axios
En utilisant les bibliothèques suivantes, nous démontrerons plus clairement la puissance d'Axios.
Cauchemar
Nightmare a été créé dans le but d'aider ses utilisateurs à automatiser différentes tâches sur des sites web qui ne possèdent pas d'API.
Actuellement, la plupart des gens l'utilisent pour créer une requête plus réaliste lorsqu'ils essaient de récupérer des données sur une page web. En utilisant ses fonctionnalités de base, nous pouvons imiter l'action d'un utilisateur avec une API qui semble synchrone pour chaque bloc de script.
Examinons un exemple concret de l'utilisation de Nightmare à des fins d'exploration du web.
Comme il utilise Electron au lieu de Chromium, la taille du paquet est un peu plus petite. Nightmare peut être installé en exécutant la commande suivante.
npm i nightmare
Nous allons essayer de faire une capture d'écran d'une page web au hasard. Créons un nouveau fichier index.js et tapons ou copions le code suivant :
const Nightmare = require('nightmare')
const nightmare = new Nightmare()
return nightmare.goto('https://www.old.reddit.com/r/learnprogramming')
.screenshot('./screenshot.png')
.end()
.then(() => {
console.log('Done!')
})
.catch((err) => {
console.error(err)
})Comme vous pouvez le voir à la ligne 2, nous créons une nouvelle instance de Nightmare, nous dirigeons le navigateur vers la page web que nous voulons capturer, nous prenons et sauvegardons la capture d'écran à la ligne 5 et nous terminons la session Nightmare à la ligne 6.
Pour l'exécuter, tapez la commande suivante dans le terminal et appuyez sur la touche Entrée.
node index.js
Vous devriez voir deux nouveaux fichiers screenshot.png dans le dossier projects.
Cheerio
Pour tester la fonctionnalité de Cheerio, essayons de rassembler tous les titres de posts sur le même subreddit : /r/learnprogramming.
Créons un nouveau fichier appelé index.js et tapons ou copions simplement les lignes suivantes :
const axios = require("axios");
const cheerio = require("cheerio");
const fetchTitles = async () => {
try {
const response = await axios.get('https://old.reddit.com/r/learnprogramming/');
const html = response.data;
const $ = cheerio.load(html);
const titles = [];
$('div > p.title > a').each((_idx, el) => {
const title = $(el).text()
titles.push(title)
});
return titles;
} catch (error) {
throw error;
}
};
fetchTitles().then((titles) => console.log(titles));Comme nous pouvons le voir, Cheerio implémente un sous-ensemble du noyau de jQuery. Pour être sûr de ne sélectionner que les balises d'ancrage qui contiennent le titre de l'article, nous allons également sélectionner leurs parents en utilisant le sélecteur suivant à la ligne 15.
Pour obtenir chaque titre individuellement, nous allons parcourir en boucle chaque message à l'aide de la fonction each(). Enfin, en appelant text() sur chaque article, nous obtiendrons le titre de l'article en question.
Pour l'exécuter, il suffit de taper la commande suivante dans le terminal et d'appuyer sur la touche Entrée.
node index.js
Vous devriez voir un tableau contenant tous les titres des articles.
Marionnettiste
Puppeteer nous aide à automatiser les tâches les plus élémentaires que nous effectuons normalement lorsque nous utilisons un navigateur web, comme remplir un formulaire ou faire des captures d'écran de pages spécifiques.
Essayons de mieux comprendre son fonctionnement en prenant une capture d'écran de la communauté Reddit /r/learnprogramming. Exécutez la commande suivante dans le dossier projects pour installer la dépendance :
npm i puppeteer
Maintenant, créez un nouveau fichier index.js et tapez ou copiez le code suivant :
const puppeteer = require('puppeteer')
async function takeScreenshot() {
try {
const URL = 'https://www.old.reddit.com/r/learnprogramming/'
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto(URL)
await page.pdf({ path: 'page.pdf' })
await page.screenshot({ path: 'screenshot.png' })
await browser.close()
} catch (error) {
console.error(error)
}
}
takeScreenshot()Nous avons créé la fonction asynchrone takeScreenshot().
Comme vous pouvez le voir, les méthodes pdf() et screenshot() nous aident à créer un nouveau fichier PDF et une image qui contient la page web en tant que composant visuel.
Pour l'exécuter, lancez node index.js dans une nouvelle fenêtre de terminal. Vous devriez voir deux nouveaux fichiers dans le dossier projects, appelés page.pdf et screenshot.png.
Sélénium
Selenium est utilisé par de nombreux spécialistes de l'automatisation, scientifiques des données, ingénieurs en assurance qualité et développeurs de logiciels. En l'installant simplement et en écrivant moins de 10 lignes de code, nous pouvons ressentir la puissance du web scraping.
Tout comme Nightmare, Selenium crée une requête HTTP plus réaliste en effectuant des actions telles que l'ouverture d'une page, le clic sur un bouton ou le remplissage d'un formulaire.
Nous pouvons installer Selenium en exécutant la commande suivante dans une nouvelle fenêtre de terminal :
npm i selenium-webdriver
Maintenant, essayons de faire une recherche sur Google. Tout d'abord, créez un nouveau fichier index.js et tapez ou copiez le code suivant :
const {Builder, By, Key, until} = require('selenium-webdriver');
(async function example() {
let driver = await new Builder().forBrowser('firefox').build();
try {
await driver.get('http://www.google.com/');
await driver.findElement(By.name('q'));
await driver.sendKeys(web scraping, Key.RETURN);
await driver.wait(until.titleIs('web scraping - Google Search'), 1000);
} finally {
await driver.quit();
}
})();Consultez la documentation de Selenium pour plus d'informations.
Conclusion
Le web scraping est une technique très puissante pour extraire des informations des pages web. Pour l'un des cas d'utilisation présentés ci-dessus, le web scraping peut faire gagner beaucoup d'argent et de temps. Si le script est programmé de manière appropriée, l'ordinateur peut extraire et classer beaucoup plus d'informations qu'un être humain. C'est pourquoi les bonnes bibliothèques sont importantes.
Des difficultés surgissent lorsque l'on fait du web scraping. Les problèmes sont inévitables, mais ils peuvent généralement être résolus. En fin de compte, c'est une question d'expérience. Si vous êtes plus à l'aise avec Selenium qu'avec Nightmare, allez-y. Il n'y a pas de bibliothèque parfaite et nous le savons. Nous espérons simplement avoir réussi à rendre votre processus de décision un peu moins compliqué.
Vous pouvez trouver plus d'informations sur le web scraping en lisant les articles suivants :
Nouvelles et mises à jour
Restez au courant des derniers guides et nouvelles sur le web scraping en vous inscrivant à notre lettre d'information.
Nous nous soucions de la protection de vos données. Lisez notre politique de confidentialité.

Articles connexes

Explorez les complexités du scraping des données de produits Amazon avec notre guide approfondi. Des meilleures pratiques aux outils tels que l'API Amazon Scraper, en passant par les considérations juridiques, apprenez à relever les défis, à contourner les CAPTCHA et à extraire efficacement des informations précieuses.


Apprenez quel est le meilleur navigateur pour contourner les systèmes de détection de Cloudflare lorsque vous faites du web scraping avec Selenium.


Apprenez à utiliser les proxys avec Axios et Node.js pour un web scraping efficace. Conseils, exemples de code et avantages de l'utilisation de WebScrapingAPI inclus.
