Le web scraping consiste à extraire des données à partir de sites web. Vous pouvez effectuer cette extraction manuellement à l'aide de navigateurs web ou l'automatiser à l'aide de bibliothèques telles que Selenium et Puppeteer.
Selenium est un outil open source qui vous permet d'automatiser des applications web et de tester les fonctionnalités de votre site web sans avoir à écrire de code dans votre navigateur. Il est également compatible avec d'autres langages de programmation tels que Java, Python, C#, etc.
Puppeteer est une bibliothèque JavaScript permettant d'automatiser les tests du navigateur Chrome sur des systèmes Linux sans interface graphique. Puppeteer prend en charge Chrome et a été testé sur Ubuntu 16.04 LTS, 18.04 LTS et Debian 9 Stretch/Buster/Siduction (64 bits).
Dans cet article, nous allons découvrir comment utiliser Selenium WebDriver dans Node.js avec Puppeteer pour automatiser des applications à l'aide du navigateur Chrome.
Qu'est-ce que le marionnettiste ?
Puppeteer est une bibliothèque JavaScript qui permet de contrôler le navigateur à l'aide de puppeteer.js. Cette bibliothèque fournit une API permettant de créer, de gérer et d'interagir avec des pages web sans recourir à des solutions tierces. Elle prend également en charge la capture des événements de souris et des saisies au clavier, ce qui vous permet d'interagir avec la page.
Comment fonctionne Puppeteer ?
Puppeteer est une bibliothèque Node.js permettant de contrôler Chrome. Elle vous permet de contrôler le navigateur à l'aide de JavaScript et d'interagir avec lui d'une manière impossible à réaliser en utilisant uniquement HTML, CSS et JS.
Vous pouvez l'utiliser pour simuler des événements de souris ou de clavier, réaliser des captures d'écran, manipuler des éléments DOM, envoyer des requêtes HTTP, etc. Puppeteer dispose également d'une API qui vous permet d'écrire vos scripts Puppeteer sans avoir à utiliser directement aucune de ses API. Pour en savoir plus sur cette API, rendez-vous ici : https://github.com/puppeteerjs/puppeteer-api.
Puppeteer apporte une solution au problème suivant : comment contrôler un navigateur sans pouvoir exécuter de code JavaScript ? Puppeteer vous permet de simuler des événements de souris et de clavier, de réaliser des captures d'écran, de manipuler des éléments DOM, d'envoyer des requêtes HTTP, et bien plus encore. Il est également possible d'écrire vos propres scripts Puppeteer sans utiliser directement aucune de ses API. Cela s'avère utile si vous souhaitez créer votre propre extension Chrome qui interagit avec le navigateur de manière inattendue.
Le contexte de la complexité et de l'automatisation évolue de jour en jour ; un seul outil ne peut donc pas être la solution universelle. Puppeteer présente certaines limites. Il ne prend en charge que le navigateur Chrome. La version de Puppeteer pour Firefox est en cours de développement.
Quels sont les avantages de l'utilisation de Puppeteer ?
Puppeteer offre un moyen simple d'exécuter des scripts dans votre navigateur sans avoir à les écrire vous-même. C'est un outil simple, léger et extensible. Vous pouvez l'utiliser avec n'importe quel langage de programmation ou framework (NodeJS, Python, Java). Il dispose de sa propre API, ce qui vous évite d'avoir à en apprendre une autre uniquement pour le web scraping.
Il n'est pas nécessaire de comprendre le fonctionnement de Selenium pour utiliser Puppeteer, mais vous bénéficiez tout de même de tous ses avantages : automatisation, facilité de test et portabilité !
Quels sont les inconvénients liés à l'utilisation de Puppeteer ?
Puppeteer est un framework très récent. Il est encore en version bêta et ne prend pas en charge tous les navigateurs (il ne fonctionne qu’avec Chrome, Firefox, Opera et Safari). Cependant, avec le temps, Puppeteer sera capable de prendre en charge davantage de navigateurs. L’API n’est pas encore aussi aboutie que celle de Selenium ; vous pourriez donc rencontrer quelques difficultés au début, mais la situation s’améliorera avec le temps. Vous trouverez de nombreux exemples d'utilisation de Puppeteer sur son site officiel : puppeteerjs.com/docs/getting-started/.
Comment installer Puppeteer ?
Vous pouvez installer Puppeteer soit en téléchargeant un paquet depuis le site web, soit en l'installant manuellement. Rendez-vous sur la page du dépôt Puppeteer et téléchargez la dernière version adaptée à votre système d'exploitation. Pour l'exécuter, vous devez avoir installé NodeJS sur votre ordinateur. Si vous ne savez pas par où commencer, rendez-vous ici : nodejs.org/en/download. Exécutez la commande `npm install -g puppet`. Cela téléchargera toutes les dépendances nécessaires au fonctionnement de puppetserver. Ouvrez ensuite une fenêtre de terminal dans votre répertoire personnel et tapez `puppetserver`.
Si tout se passe bien, vous devriez voir quelque chose comme ça :
$ node server Starting server… done! http://localhost:4200 Connecting…done! http://localhost:4200 Disconnected / Connected http://localhost:4200 <– Start scraping now!
Pour quitter, appuyez sur Ctrl+C, puis tapez « exit ».
Qu'est-ce que Selenium ?
Selenium est un outil puissant qui permet d'automatiser les applications Web. On l'appelle aussi couramment «Webdriver ». Selenium existe depuis un certain temps déjà et est devenu l'un des outils les plus populaires du secteur informatique.
À quoi sert Selenium ?
Selenium vous permet d'automatiser vos sites web en exécutant différentes actions telles que cliquer sur des boutons, remplir des formulaires ou encore naviguer entre les pages. L'objectif principal de ce logiciel est de rendre les tests automatisés simples et efficaces sans avoir à écrire de code vous-même. Vous pouvez utiliser ce logiciel depuis votre navigateur (Chrome/Firefox) ou au sein d'un langage de programmation tel que Java, C# ou Python, etc. Une fois installé sur votre ordinateur, vous devez télécharger le serveur Selenium, qui fonctionne sur le port 4444 (par défaut). Ouvrez ensuite Chrome/Firefox et saisissez chrome://extensions dans la barre d'adresse : vous verrez alors s'afficher une liste des extensions disponibles ; sélectionnez« Gérer les extensions », puis cliquez sur le bouton «Charger une extension non packagée».
Vous pouvez utiliser Selenium pour tester des sites web, des applications mobiles et des applications de bureau. Cet outil est simple d'utilisation et vous permet d'automatiser des applications web sans aucune connaissance en programmation. Vous pouvez également créer vos propres tests à l'aide de Selenium IDE, qui dispose d'une interface visuelle permettant de développer des tests de manière intuitive.
Avantages du sélénium
- Il fonctionne sur tous les navigateurs Web (Chrome, Firefox, IE) et sur les appareils mobiles (Android). Selenium est multiplateforme. Il vous suffit d'installer un IDE adapté à la plateforme de votre choix et de commencer à utiliser l'API. Vous n'avez pas besoin d'apprendre de nouvelles API ni de nouveaux langages pour chaque plateforme : un seul langage suffit, qui fonctionne sur toutes les plateformes.
- Selenium prend en charge la plupart des langages de programmation existants, notamment Java, C#, Python et bien d'autres encore. Si vous souhaitez automatiser une tâche en JavaScript, vous pouvez utiliser NodeJS avec selenium-nodejs.
- Selenium prend en charge plusieurs frameworks tels que Protractor, WebDriver, etc. Le principal avantage de ces frameworks est qu’ils offrent une couche d’abstraction pratique qui simplifie les choses par rapport à l’écriture directe de code d’automatisation dans le navigateur lui-même. Par exemple, si nous souhaitons que nos tests s'exécutent simultanément sur plusieurs navigateurs, nous pouvons y parvenir grâce à Selenium WebDriver et Selenium WebDriver2. Cela signifie que nous n'aurons aucun problème lors des tests sur plusieurs navigateurs à la fois, car tout sera géré par le framework lui-même, au lieu d'avoir à écrire manuellement du code personnalisé dans chaque navigateur (ce qui rendrait notre suite de tests beaucoup plus complexe).
- De nombreux plugins sont disponibles pour Selenium, tels que des extensions Google Chrome, des modules complémentaires Firefox, etc. Quoi d’autre ? De nombreux exemples ! Et pas seulement issus de projets open source, mais aussi de projets commerciaux comme Appium, Sauce Labs ou Watir. Alors si vous cherchez une solution rapide et simple, n’hésitez pas à les essayer ! Ce sont d’excellents outils ! Ils prennent également en charge les tests asynchrones, ce qui signifie que même si votre test prend plus de temps que prévu, cela n’affectera pas les autres tests s’exécutant simultanément en parallèle, sans bloquer le flux d’exécution les uns des autres (mode asynchrone). De cette manière, nous pouvons écrire rapidement des tests d’interface utilisateur sans craindre de ralentir notre application.
Tendances du marché concernant Selenium et Puppeteer : pourquoi cela devrait-il vous intéresser ?
Les tendances du marché concernant Selenium et Puppeteer montrent que leur utilisation a connu une hausse significative au cours des dernières années, en particulier depuis la sortie de Selenium 2 en 2014. La popularité de Selenium n'a cessé de croître depuis lors, ce qui laisse penser qu'elle devrait continuer à progresser à ce rythme dans un avenir proche.
Quel est l'avenir des tests Web ?
La communauté open source continue de développer de nouvelles technologies et d'améliorer celles qui existent déjà, sans qu'aucun signe ne laisse présager un ralentissement dans un avenir proche. Tant que nous continuerons à innover et à créer de nouveaux outils, nous pouvons nous attendre à de nouvelles avancées dans le domaine des technologies de test Web.
Outils d'automatisation Web : pourquoi les utiliser ?
Lorsque les membres de votre équipe doivent travailler sur leurs projets ou qu'ils ont besoin d'aide pour tester leur base de code à l'aide de tests automatisés, le fait de disposer d'un outil d'automatisation tel que WebDriver leur facilitera grandement la tâche, plutôt que de devoir recourir à des solutions manuelles à chaque fois qu'ils souhaitent effectuer un test manuellement.
Lorsque vous disposez d'un outil d'automatisation Web tel que WebDriver, vous pouvez l'utiliser pour automatiser vos tests et les écrire dans différents langages. Vous pouvez également vous en servir pour interagir avec le navigateur et tester des fonctionnalités spécifiques de l'application qui sont difficiles, voire impossibles, à réaliser manuellement. Les possibilités sont infinies !
L'utilisation d'un outil d'automatisation vous facilitera grandement la vie en vous permettant d'écrire des tests automatisés pour votre base de code sans avoir à vous soucier des rouages techniques.
Selenium ou Puppeteer : lequel est le plus adapté au webscraping ?
La principale différence entre les deux réside dans le fait que Puppeteer s'exécute sous Node.js, tandis que Selenium s'exécute dans le navigateur.
Vous pouvez utiliser Puppeteer pour le web scraping et les tests d'API, mais il n'est pas aussi largement pris en charge que Selenium. Il ne dispose pas non plus d'un exécuteur de tests d'interface utilisateur intégré ; vous devrez donc en écrire un vous-même si vous souhaitez l'utiliser avec un navigateur sans interface graphique (headless) tel que PhantomJS ou NightwatchJS.
Selenium bénéficie d'une meilleure prise en charge par les navigateurs que Puppeteer, et son outil d'exécution de tests d'interface utilisateur fonctionne dès l'installation avec la plupart des navigateurs courants (y compris Chrome). Cependant, certaines fonctionnalités font encore défaut à Selenium par rapport à Puppeteer. Notamment, les API WebDriver permettant d’interagir avec les éléments d’une page – ce qui signifie qu’il est plus difficile d’automatiser des interactions complexes sur plusieurs pages, domaines ou applications (par exemple, cliquer sur des liens) en utilisant uniquement cette bibliothèque.
La solidité de votre entreprise dépend de la disponibilité de vos proxys. Optez pour des proxys ISP statiques de niveau professionnel afin de bénéficier de débits dédiés et d'une fiabilité à toute épreuve. OU déployez des proxys résidentiels rotatifs et atteignez un taux de réussite de 99,9 % en matière de scraping.
