La sécurité est un enjeu majeur des technologies numériques modernes. Avec le développement d’Internet et de la notion du partage en général, de nombreuses données circulent chaque jour sur les réseaux interconnectés et spécialement sur les sites web.
Certains sites web peuvent contenir une très grande quantité d’informations ou de données inestimables. Pour citer quelques exemples d’informations, nous pouvons parler des produits les plus achetés sur un site d’e-commerce, des statistiques sur des activités sportives, des informations personnelles d’une entreprise, des données sur les produits et marques vestimentaires les plus tendances pour ne citer que ceux-là.
Ces données peuvent faire le sujet d’une étude ou d’un traitement spécifique. Pour se faire, il existe un certain nombre de possibilités. Vous pouvez soit utiliser le format utilisé par le site-web, soit copier-coller les informations manuellement dans un nouveau document, soit extraire ces données du site-web dans un format qui vous serait plus utile.
Le Webscraping est le nom donné à l’extraction des données à partir d’un site-web. Bien que le Webscraping puisse être effectué manuellement, il est conseillé d’utiliser les outils automatisés, car ils sont moins coûteux et permettent de gagner en temps. Dans tous les cas, il ne s’agit pas d’une tâche aussi simple, mais pas si compliquée que l’on pourrait bien le croire. L’un des outils permettant d’atteindre cet objectif est Selenium Python.
Malgré le fait que le premier rôle de Selenium soit le test de pages web, cet outil est très utilisé pour l’extraction de données. Les données extraites peuvent être utilisées à des fins différentes, tant positives que négatives.
Dans ce tutoriel exhaustif, nous verrons plus en détail l’extraction des données avec Selenium Python.
Qu’est-ce que le webscraping ?
Comment parler de Selenium Python sans aborder un peu ce que c’est que le Webscraping ? Nous pouvons dire que le Webscraping fait référence à l’extraction de données à partir d’un site web via un programme, un logiciel automatique ou un autre site. L’objectif est d’extraire le contenu d’une page d’un site de façon structurée.
En d’autres termes, il s’agit d’un processus faisant usage de robots pour extraire le contenu et les données d’un site web.
Comme définition, on peut retenir que le Web Scraping, encore appelé « Crawling » ou « Spidering », est la technique permettant de collecter automatiquement des données à partir d’une source en ligne, généralement à partir d’un site Web.
Contrairement au screen scraping, qui ne copie que les pixels affichés à l’écran, le web scraping extrait le code HTML sous-jacent et les données stockées dans une base de données. Comme nous l’avons dit plus haut, ces informations sont collectées, puis exportées dans un format plus utile pour l’utilisateur.
Les sites web se présentent sous de nombreuses formes. L’extraction de ces données peut être très délicate et variée. Vous pouvez rencontrer des captchas en essayant de scraper certains sites web. L’action du webscraping n’est pas illégal. Cependant, certaines règles doivent être respectées. Elle devient illégale lorsque l’on essaie d’extraire des données non accessibles au public. Le web scraping est utilisé dans diverses entreprises numériques qui reposent sur la collecte des données. On peut citer l’exemple des moteurs de recherches qui parcourent un site, analysent le contenu puis le classent. On le retrouve également sur des sites de comparaisons des prix de produits vendus ou encore l’extraction des données sur des médias sociaux dans le but d’analyser les sentiments.
Qu’est-ce que Selenuim Python et quelles sont ces caractéristiques ?
Selon Wikipedia, Selenium est un framework développé en java, qui offre des passerelles pour s’exécuter avec différents langages comme Python et PHP. Il s’agit d’un outil puissant pour contrôler les navigateurs web grâce à des programmes et effectuer l’automatisation du navigateur. Il prend en compte tous les navigateurs, tous les principaux systèmes d’exploitation et ses scripts sont écrits dans différents langages comme Python, java, C# …
Selenium vous permet de tester votre application web. En d’autres termes, il permet une automatisation efficace des tests de l’interface graphique des applications Web. Il est composé principalement de 4 composants à savoir : Selenium IDE, Selenium RC, Selenium Webdriver et Selenium GRID.
Selenium IDE (Integrated Development Environment)
Il s’agit d’un environnement de développement intégré complet pour les tests Selenium. Il permet l’enregistrement, l’édition et le débogage des tests fonctionnels. Les scripts peuvent être automatiquement enregistrés et modifiés manuellement, permettant ainsi une prise en charge de la saisie semi-automatique et la possibilité de déplacer rapidement les commandes. Les scripts sont enregistrés en Selenese, un langage de script de test spécial pour Selenium.
Selenium RC (Remote Control)
C’est un serveur, écrit en Java, qui accepte les commandes du navigateur via HTTP. Il permet d’écrire des tests automatisés pour une application Web dans n’importe quel langage de programmation, ce qui permet une meilleure intégration de Selenium dans les frameworks de tests unitaires existants. Pour faciliter l’écriture de tests, le projet Selenium fournit actuellement des pilotes clients pour PHP, Python, Ruby, .NET, Perl et Java.
Selenium Webdriver
Selenium Webdriver accepte les commandes (envoyées en Selenese, ou via une API cliente) et les envoie à un navigateur. Ceci est implémenté via un pilote de navigateur spécifique au navigateur, qui envoie des commandes à un navigateur et récupère les résultats. Il n’a pas besoin d’un serveur spécial pour exécuter les tests.
Selenium GRID
C’estun serveur qui permet aux tests d’utiliser des instances de navigateur Web s’exécutant sur des machines distantes. Avec Selenium Grid, un serveur fait office de hub. Les tests contactent le hub pour obtenir l’accès aux instances de navigateur. Le hub dispose d’une liste de serveurs qui permettent d’accéder aux instances de navigateur (WebDriver nodes) et permet aux tests d’utiliser ces instances. Selenium Grid permet d’exécuter des tests en parallèle sur plusieurs machines et de gérer différentes versions et configurations de navigateur de manière centralisée.
En ce qui concerne Python, c’est un langage de script orienté objet de haut niveau. Il est conçu de manière conviviale car Python utilise des mots-clés anglais simples, faciles à interpréter. Donc, il a moins de complications de syntaxe que tout autre langage de programmation. D’ailleurs, si vous souhaitez acquérir les bases de la programmation Python, nous avons un article qui traite de ce sujet.
Comme évoqué dans l’introduction, bien que le premier rôle de Selenium soit le test de pages web, cet outil est beaucoup utilisé pour l’extraction de données. Il permet de créer des robots qui naviguent dans des pages web comme le ferait un vrai utilisateur. Sélénium est souvent nécessaire pour extraire des données de sites Web utilisant beaucoup de Javascript. Des outils du WebScraping comme Selenium avec Python peuvent extraire un grand volume de données telles que du texte et des images en un temps relativement court.
Pourquoi devez-vous apprendre Selenuim Python ?
Selenium Python offre plusieurs avantages pour scraper les données d’un site web de façon structurée. L’apprendre est un grand atout si l’on souhaite effectuer du WebScraping. Les avantages de Selenium Python sont qu’il :
- est un framework open source et portable ;
- fonctionne avec de nombreux langages de programmation.
- peut être utilisé avec de nombreux navigateurs et plateformes différents.
- est alimenté par une grande communauté.
- peut explorer un site Web à l’aide d’un navigateur spécifique : bien que de nombreux logiciels de scraping de sites Web utilise un véritable navigateur Web pour l’extraction de données, dans la plupart des cas, le navigateur qu’ils utilisent est WebBrowser Control, c’est-à-dire Internet Explorer. Selenuim, cependant, fonctionne non seulement avec Internet Explorer, mais aussi avec une variété de navigateurs tels que Google Chrome, Firefox, Opera, HtmlUnit et même Android et iOS.
- peut extraire des pages Web complexes au contenu dynamique : parfois, les données que vous devez extraire ne se trouvent pas dans le HTML brut que vous avez obtenu après avoir effectué une requête HTTP. Elles peuvent être générées de manière dynamique (en utilisant AJAX et JavaScript). Selenuim Python permet l’extraction de données même qui sont générées dynamiquement.
- Selenuim Python est capable de faire des captures d’écran de la page que vous scraper.
Démarrer avec Selenuim Python
Dans cette partie de cet article nous verrons comment installer Selenuim et nous verrons un exemple d’extraction de données avec Selenuim Python.
Pour une meilleure maîtrise de cette librairie vous devez avoir une connaissance de base sur le langage de programmation python et une connaissance générale du web scraping. Des articles parlant de ces deux sujets sont disponibles sur notre site.
Comme dit plus haut, il existe différents composants du framework Selenium. Tous ses composants ont des caractéristiques distinctes qui leur sont associées. Dans notre cas nous allons installer le composant Selenium WebDriver avec python pour notre étude de cas.
Selenium Python sous Windows
Si vous utilisez Windows, vous pouvez effectuer les étapes suivantes :
Etape #1 : installer Python
Tout d’abord nous allons installer python sur notre ordinateur. Cliquez sur le lien pour télécharger et installer python.
Etape #2 : installer Selenium WebDriver
Ensuite, installez Selenium WebDriver à l’aide de Pip, qui est le gestionnaire officiel de package de python.
Ouvrez votre invite de commande et saisissez le code :
pip install selenium
Si cette commande vous génère des erreurs, vous pouvez exécuter avec l’indicateur -m. Il représente le nom du module et vous permet de passer un module au moment de l’appel de Python :
python -m pip install selenium
Etape #3 : intégrer Selenium python avec un navigateur
Après l’installation, il faut que vous téléchargiez un pilote qui s’intègre au navigateur de votre choix. Ce pilote permettra à Selenium de contrôler le navigateur et d’automatiser les commandes que vous écrivez dans vos scripts. Ici on va utiliser le pilote de chrome.
Après le téléchargement, vous devez dézipper le fichier et placer l’exécutable sur votre stockage à un endroit de votre choix.
Après cela, copiez le chemin vers l’exécutable que vous ajoutez à votre variable d’environnement.
Etape #4 : vérifier les installations
Ensuite, vous pouvez effectuer un test dans votre invite de commande pour vérifier. Comme nous avions utilisé chrome, dans l’invite de commande saisissez :
chromedriver
Si tout va bien vous aurez cet affichage :
Pour vérifier la version de python installée dans l’invite de commande, saisissez :
Python --version
Et avec py vous avez accès au shell de python. Vous pouvez aussi le lancer à partir de l’utilitaire de windows :
Etape #5 : installer PyCharm
Après cela, vous pouvez installer PyCharm comme éditeur de code. Si vous avez Visual Studio Code, cela peut également faire l’affaire.
Pour la suite du tutoriel, nous allons utiliser Visual Studio Code comme éditeur. Vous devez choisir python comme langage de programmation dans ce cas.
Etape #6 : créer un projet
Pour scrapper un site web avec Selenium Python, nous avons essentiellement 6 étapes à suivre :
- Trouver l’URL du site à scrapper ;
- Inspecter la page ;
- Trouver les données que nous voulons extraire ;
- Coder le script de scraping ;
- Exécuter le script et extraire les données ;
- Stocker les données sous le format requis.
Créez un projet et nommez-le comme vous le voulez. Moi je l’ai nommé Webscraping.
À l’intérieur créer un fichier avec l’extension .py.
Nous allons donc commencer par démarrer notre navigateur avec le code suivant dans le fichier :
La ligne 1 nous permet d’importer le WebDriver. Le chemin vers l’exécutable de chrome est visible à la ligne 3. Nous voyons par la suite, à la ligne 4 le code qui permet de lancer le navigateur. Enfin, on demande la page de google à la ligne 5.
Après lancement de ce bout de code, nous aurons le lancement du navigateur :
Vous devez voir un message indiquant que le navigateur est contrôlé par un logiciel automatisé.
Etape #7 : localiser un élément à scrapper
Maintenant, il faut que nous localisions l’élément que nous voulons scraper. Il existe de nombreuses méthodes disponibles dans l’API Selenium pour sélectionner des éléments sur la page. On peut utiliser :
- Nom de la balise
- Nom du site web
- ID
- XPath
- Sélecteurs CSS
Le moyen le plus simple de localiser un élément est d’ouvrir vos outils de développement Chrome et d’inspecter l’élément dont vous avez besoin.
Donc, après lancement du navigateur allez sur le de lws, par exemple.
Il existe de nombreuses façons de localiser un élément dans le sélénium. Disons que nous voulons localiser la balise title sur notre site web. Il suffit d’ajouter à notre précédent code ce bout de code :
Après exécution, nous pouvons voir dans notre console :
Etape #8 : extraire des données
Jusque-là, nous avons juste localisé un élément. Maintenant, supposons que nous voulons extraire certaines données de notre site web. On fera l’exemple avec le site lws
En premier lieu, nous allons visiter le site et inspecter l’élément que nous allons extraire.
Supposons que nous voulons l’information contenue dans la balise div dont l’id est container. Nous allons utiliser le XPath dans cet exemple pour localiser notre élément. C’est un moyen puissant d’extraire n’importe quel élément d’une page, en fonction de sa position absolue sur le DOM ou par rapport à un autre élément.
Voici ce que fait notre code ci-dessus
De la ligne 3 à la ligne 5, nous l’avons expliqué plus haut. Ce qui a changé c’est juste le lien de la page visité (lws). Dans l’exemple précédent, c’était celui de google.
À la ligne 7 nous faisons une déclaration de tableau.
Ensuite, à la ligne 8, nous affectons les éléments de notre div grâce à la méthode find_elements_by_xpath de Sélénium en lui passant l’id de notre div. Les lignes suivantes, nous faisons juste un parcours du tableau pour afficher les données localisées.
Voici une partie des informations obtenues dans la console :
Tout ce qui est texte sur notre page web contenu dans notre div est affiché dans la console.
Selenium Python sous Linux
L’installation de Python sur Linux est simple. Tout ce que vous avez à faire est de télécharger le package Python officiel en utilisant le gestionnaire de packages par défaut de votre distribution.
Pour installer Python sous Linux, voici la commande à taper :
Débian :
sudo apt-get install python
Fedora :
sudo dnf install python
CentOS :
sudo yum install python
Pour installer Selenium WebDriver, il suffit d’ouvrir le terminal et de saisir le code :
pip install selenium
ou
python -m pip install selenium
Pour ajouter le pilote Web aux variables PATH sous Linux il faut :
- Télécharger le pilote Web pour Linux en utilisant le lien
- Extraire le fichier ZIP téléchargé et copiez le fichier webdrivername à un emplacement spécifique sur votre stockage système
- Copier le chemin du fichier exécutable
- Lancer le terminal en appuyant sur Ctrl + Alt + T
- Modifier le fichier de profil utilisateur — alors que vous pouvez ouvrir le fichier avec n’importe quel éditeur de texte Linux de votre choix, dans ce cas, nous utiliserons Nano
sudo nano /home/username/.profile
- Ajouter la ligne suivante à la fin du fichier :
export PATH=$PATH:/pathtodriver/webdriver
- Puis, enregistrer le fichier
Après cela, vous pouvez procéder comme sur Windows pour votre WebScraping.
La quantité de données qui circulent de nos jours sur Internet est colossale. C’est le fondement même de ce que l’on appelle le Big Data. Il est donc d’actualité de trouver des moyens plus simples pour le traitement de ces données en cas de besoin. Le Webscraping est un moyen légal pour y parvenir, lorsque l’accès à ces données n’est pas interdit où réserver à des particuliers. Avec des outils automatisés il est plus facile de recueillir ces données sous des formats adéquats pour un certain nombre de traitements. En particulier pour les sites web, Selenium Python est un moyen simple pour parvenir à extraire des données. Il est facile à prendre en main. L’apprendre serait un grand atout, si l’on souhaite faire du Webscraping, même si sa fonction première est l’automatisation des tests.
Voilà, nous sommes arrivés à la fin de ce tutoriel. Vous pouvez donc maintenant extraire des données en utilisant Selenium Python avec efficacité. Si vous souhaitez apprendre davantage sur le Big Data et sur la programmation informatique, nous vous invitons de télécharger notre formation sur la programmation scala.