Apprenez Selenium avec Python en 7 minutes ou moins!
Votre premier cours Selenium pour l’automatisation et le Scrapping du Web.
Écrit par: Amal Hasni & Dhia Hmila
Je suppose que si vous avez atterri ici, vous avez déjà au moins entendu parler de Selenium et à quoi il sert. Mais juste au cas où, Selenium est un Framewrok créé principalement pour tester des applications web, mais il peut également être intéressant de l’utiliser pour le scrapping du web ou l’automatisation de certaines tâches répétitives sur n’importe quel site web.
Pourquoi est-ce intéressant d’utiliser le sélénium pour le Scrapping?
Dans un monde parfait, lors du scrapping, le site est tout propre et vous trouverez les informations dont vous avez besoin sur la page principale sans popup de publicité pour acheter des chaussettes trouées pour décorer son 20m². Cependant, dans la pratique, c’est rarement le cas. Selenium offre la possibilité d’interagir avec le site que vous scrappez afin de créer un chemin vers la page que vous voulez. En fait, en utilisant Sélénium, vous pouvez simuler les actions que vous devez effectuer, telles que les boutons de clic, défilement, fentes de remplissage, etc.. comme si vous étiez en train de naviguer vous même.
Si vous préférez lire cette article en anglais , il est disponible sur ce lien .
Maintenant que vous savez à quel point Selenium est pratique, il est temps de passer aux choses sérieuses. Commençons par les installations nécessaires
Comment l’installer?
Puisque nous utilisons python, l‘installation de Selenium est aussi simple qu’une installation pip :
pip install selenium
En plus du package python, vous devez avoir un navigateur web (Chrome, Firefox, Opera…) et le WebDriver qui y correspond !
“Mais Qu’est-ce qu’un WebDriver ?” pourrait-on dire. Eh bien, c’est tout simplement une interface de contrôle à distance pour les navigateurs.
Voici les liens de téléchargement pour les navigateurs les plus couramment utilisés. Assurez-vous que vous avez la bonne version pour votre navigateur ou bien il ne fonctionnera pas (la dernière version devrait être très bien sauf si cela fait un bon moment que vous n’avez pas mis votre navigateur à jour)
- Firefox: GeckoDriver
- Chrome: ChromeDriver
- Opera: OperaDriver
- Edge: Microsoft Edge WebDriver
Vous pouvez également utiliser webdriver_manager pour télécharger le WebDriver dont vous avez besoin automatiquement via python (voir la partie suivante pour plus d’informations)!
Les premiers pas
Maintenant que tout est installé, nous allons plonger dans le code à travers un exemple. Nous allons essayer de lancer GitHub et de nous connecter à un compte existant à l’aide de Selenium.
Tout d’abord, nous avons besoin de créer notre webdriver pour Firefox (N’oubliez pas de remplacer CHEMIN_VERS_GECKO_DRIVER avec votre chemin exécutable webdriver):
Une deuxième option consiste à utiliser webdriver_manager ( pip install webdriver_manager
) qui téléchargera automatiquement GeckoDriver :
Lancer GitHub et identifier les champs de connexions
Le lancement de GitHub est aussi facile que cela:
url = "https://github.com/login"
browser.get(url)
Nous devrions voir le navigateur ouvrir la page GitHub et être en mesure de se connecter. Maintenant, il faut entrer les informations d’authentification ! Pour cela, il faut pouvoir identifier les champs de connexion afin de les remplir.
On utilise ce qu’on appelle des sélecteurs , qu’on peut récupérer du code source de la page. Il existe plusieurs types de sélecteurs (Si vous connaissez HTML/CSS, vous devez déjà être familier avec eux): id, classe, nom de balise, sélecteur CSS, XPath, lien texte, etc … )
Voire la documentation pour plus de détails.
Il est important de s’assurer de choisir un sélecteur qui est unique à votre élément pour éviter d’en sélectionner un autre. Si cela semble être trop pour vous, nous allons seulement avoir besoin de l’un d’eux (qui fonctionne à chaque fois 😉): XPath ( ou chemin XML ).
Si vous vous demandez comment obtenir le XPATH facilement, vous pouvez voir comment les obtenir sur Firefox dans le GIF ci-dessous (les étapes pour le faire sur d’autres navigateurs sont très similaires):
1- Cliquez avec le bouton droit sur l’élément HTML
2- Choisir «Examiner l’élément» dans le menu contextuel.
3- Cliquez avec le bouton droit sur la ligne mise en surbrillance dans les DevTools.
4- Sélectionnez Copier, puis XPATH
Remplissage des Informations d’identification:
Maintenant que nous savons comment sélectionner un élément, nous allons utiliser la méthode send_keys pour entrer le nom d’utilisateur et le mot de passe:
username = 'TON_NOM_UTILISATEUR'
username_field.send_keys(username)
Vous pouvez adapter le même code pour remplir le champ mot de passe (ou trouver le code complet à la fin de l’article )
Il est temps de cliquer sur le bouton Connexion:
Une autre façon de faire est de simuler le clique sur la touche d’entrée:
Et voilà, Aussi facilement que cela, vous avez pu atterrir sur la page d’accueil de votre compte GitHub 🙌 !
Que faire si vous avez une connexion Internet foireuse?
Maintenant, dans certains cas, les pages et les éléments peuvent prendre un certain temps pour être disponible ou/et cliquable. Dans ces cas, il est indispensable de valider la présence des éléments nécessaires à l’aide de WebDriverWait . En fait, ce module offre la possibilité de spécifier certaines “ conditions attendues ” telles que presence_of_element_located (). Cela permet au script d’attendre un nombre prédéfini de secondes jusqu’à ce que la condition soit remplie, sinon, un TimeoutError est déclenché. Voir ci-dessous pour les lignes de code correspondantes :
Code final (prêt à l’emploi):
Si vous aimez bien la programmation orienté objet (OOP) ou que vous voulez une approche plus personnalisable, cette alternative est pour vous:
En conclusion
À ce stade, il devrait vous sembler plus facile d’utiliser Selenium avec python pour vos différents cas d’utilisation. En fait, maintenant que vous le maitrisez, vous pouvez effectuer n’importe quelle tâche de scrapping web ou test d’application web avec Selenium 💪.
Enfin, si vous êtes intéressé par un projet plus pratique, vous pouvez consulter notre article Kayak Web Scrapping où vous découvrirez des fonctionnalités plus avancées de Selenium 😉.
Si vous avez aimé ce que vous venez de lire, nous vous serions vraiment reconnaissants si vous laissiez des commentaires. Nous commençons tout juste avec les articles medium, tout encouragement est le bienvenu! Si vous avez des questions, n’hésitez pas à laisser un commentaire, et nous serions plus qu’heureux de vous aider.