Aujourd’hui, le web ne ressemble plus du tout à ce qu’il était il y a quelques années. La majorité des sites que tu visites sont bourrés de JavaScript, qui affiche le contenu à la volée : scroll infini, pop-ups, tableaux de bord qui ne révèlent leurs infos qu’après quelques clics… D’ailleurs, , ce qui veut dire que les anciens outils de scraping, qui ne lisent que le HTML statique, passent complètement à côté de tonnes de données. Si tu as déjà essayé de récupérer des prix sur un site e-commerce moderne ou de collecter des annonces immobilières sur une carte interactive, tu sais à quel point c’est frustrant : les infos que tu veux ne sont même pas dans le code source.
C’est là que Selenium devient ton meilleur allié. Après avoir passé des années à bidouiller des outils d’automatisation (et à scraper plus de sites que je n’ose l’avouer), je peux te dire que maîtriser Selenium, c’est comme avoir un super-pouvoir pour accéder à des données dynamiques et toujours à jour. Dans ce tutoriel, je t’emmène pas à pas, de l’installation à l’automatisation, et je te montre comment combiner Selenium avec pour obtenir des données structurées, prêtes à être exportées. Que tu sois analyste, commercial ou juste curieux de Python, tu repartiras avec des compétences concrètes (et sûrement quelques fous rires, parce que déboguer des sélecteurs XPath, ça forge le mental !).
Qu’est-ce que Selenium et pourquoi l’utiliser pour le scraping web ?
On commence par la base. est un framework open source qui te permet de piloter un vrai navigateur web (Chrome, Firefox…) directement avec du code. Imagine un robot qui ouvre des pages, clique sur des boutons, remplit des formulaires, scrolle ou exécute du JavaScript, exactement comme un humain. C’est crucial, car la plupart des sites modernes n’affichent pas toutes leurs données d’un coup : le contenu se charge dynamiquement, souvent après une action.
Pourquoi c’est important pour le scraping ? Les outils classiques comme BeautifulSoup ou Scrapy sont top pour le HTML statique, mais ils ne « voient » pas ce qui est chargé par JavaScript après le chargement initial. Selenium, lui, interagit en direct avec la page, ce qui le rend parfait pour :
- Extraire des listes de produits qui n’apparaissent qu’après avoir cliqué sur « Charger plus »
- Récupérer des prix ou avis mis à jour dynamiquement
- Naviguer à travers des formulaires de connexion, pop-ups ou scroll infini
- Extraire des données de dashboards, cartes ou autres éléments interactifs
En bref, Selenium est l’outil incontournable pour choper des données qui n’apparaissent qu’après le chargement complet de la page ou une action utilisateur.
Les étapes clés pour scraper le web avec Python Selenium
L’extraction avec selenium, c’est trois grandes étapes à retenir :
| Étape | Ce que tu fais | Pourquoi c’est important |
|---|---|---|
| 1. Préparer l’environnement | Installer Selenium, WebDriver et les bibliothèques Python | Avoir les bons outils et éviter les galères d’installation |
| 2. Localiser les éléments | Trouver les données via ID, classes, XPath, etc. | Cibler précisément les infos, même cachées par JavaScript |
| 3. Extraire et sauvegarder | Récupérer textes, liens ou tableaux et enregistrer en CSV/Excel | Transformer les données brutes en infos exploitables |
On va voir chaque étape avec des exemples concrets et du code prêt à copier-coller.
Étape 1 : Préparer ton environnement Python Selenium
Avant tout, il faut installer Selenium et un driver de navigateur (genre ChromeDriver pour Chrome). Bonne nouvelle : c’est super simple.
Installer Selenium
Ouvre ton terminal et tape :
1pip install selenium
Télécharger un WebDriver
- Chrome : Télécharge (prends la version qui va avec ton navigateur).
- Firefox : Télécharge .
Astuce : Depuis Selenium 4.6+, Selenium Manager peut télécharger les drivers tout seul, plus besoin de te prendre la tête avec les variables PATH ().
Ton premier script Selenium
Voici un « hello world » express :
1from selenium import webdriver
2driver = webdriver.Chrome() # Ou webdriver.Firefox()
3driver.get("https://example.com")
4print(driver.title)
5driver.quit()
Conseils si ça coince :
- Si tu vois une erreur « driver not found », vérifie ton PATH ou utilise Selenium Manager.
- Assure-toi que la version du navigateur et du driver matchent.
- Sur un serveur sans interface graphique, regarde les astuces pour le mode headless plus bas.
Étape 2 : Localiser les éléments à extraire
On passe à la partie fun : dire à Selenium quelles données tu veux récupérer. Les sites sont faits d’éléments (div, span, table, etc.) et Selenium propose plusieurs méthodes pour les cibler.
Stratégies courantes de localisation
By.ID: cibler un élément par son identifiant uniqueBy.CLASS_NAME: cibler par classe CSSBy.XPATH: utiliser des expressions XPath (super flexible, mais parfois fragile)By.CSS_SELECTOR: utiliser des sélecteurs CSS (pratique pour des requêtes complexes)
Exemple d’utilisation :
1from selenium.webdriver.common.by import By
2# Par ID
3price = driver.find_element(By.ID, "price").text
4# Par XPath
5title = driver.find_element(By.XPATH, "//h1").text
6# Toutes les images produits par sélecteur CSS
7images = driver.find_elements(By.CSS_SELECTOR, ".product img")
8for img in images:
9 print(img.get_attribute("src"))
Astuce : Prends toujours le sélecteur le plus simple et stable (ID > classe > CSS > XPath). Si la page met du temps à charger les données, utilise les attentes explicites :
1from selenium.webdriver.support.ui import WebDriverWait
2from selenium.webdriver.support import expected_conditions as EC
3wait = WebDriverWait(driver, 10)
4price_elem = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".price")))
Ça évite que ton script plante si les infos mettent du temps à s’afficher.
Étape 3 : Extraire et sauvegarder les données
Une fois les éléments trouvés, il ne reste plus qu’à extraire les données et les enregistrer.
Extraire textes, liens et tableaux
Imaginons que tu scrapes un tableau de produits :
1data = []
2rows = driver.find_elements(By.XPATH, "//table/tbody/tr")
3for row in rows:
4 cells = row.find_elements(By.TAG_NAME, "td")
5 data.append([cell.text for cell in cells])
Sauvegarder en CSV avec Pandas
1import pandas as pd
2df = pd.DataFrame(data, columns=["Nom", "Prix", "Stock"])
3df.to_csv("produits.csv", index=False)
Tu peux aussi enregistrer en Excel (df.to_excel("produits.xlsx")) ou envoyer vers Google Sheets via leur API.
Exemple complet : extraction de titres et prix de produits
1from selenium import webdriver
2from selenium.webdriver.common.by import By
3import pandas as pd
4driver = webdriver.Chrome()
5driver.get("https://example.com/products")
6data = []
7products = driver.find_elements(By.CLASS_NAME, "product-card")
8for p in products:
9 title = p.find_element(By.CLASS_NAME, "title").text
10 price = p.find_element(By.CLASS_NAME, "price").text
11 data.append([title, price])
12driver.quit()
13df = pd.DataFrame(data, columns=["Titre", "Prix"])
14df.to_csv("produits.csv", index=False)
Selenium vs BeautifulSoup et Scrapy : qu’est-ce qui rend Selenium unique ?
On va trancher le débat : quand utiliser Selenium, et quand BeautifulSoup ou Scrapy sont-ils plus adaptés ? Voici un comparatif rapide :
| Outil | Idéal pour | Gère JavaScript ? | Vitesse & ressources |
|---|---|---|---|
| Selenium | Sites dynamiques/interactifs | Oui | Plus lent, consomme plus de mémoire |
| BeautifulSoup | Scraping HTML statique simple | Non | Très rapide, léger |
| Scrapy | Crawl massif de sites statiques | Limité* | Ultra rapide, asynchrone, faible RAM |
| Thunderbit | Scraping no-code pour entreprises | Oui (IA) | Rapide pour petits/moyens volumes |
*Scrapy peut gérer un peu de contenu dynamique avec des plugins, mais ce n’est pas son point fort ().
Quand utiliser Selenium :
- Les données n’apparaissent qu’après un clic, un scroll ou une connexion
- Tu dois gérer des pop-ups, du scroll infini ou des dashboards dynamiques
- Les extracteurs statiques ne suffisent pas
Quand utiliser BeautifulSoup/Scrapy :
- Les données sont dans le HTML initial
- Tu dois scraper des milliers de pages rapidement
- Tu veux minimiser l’utilisation des ressources
Et si tu veux éviter le code, permet de scraper des sites dynamiques grâce à l’IA : clique sur « IA Suggérer des champs » et exporte vers Sheets, Notion ou Airtable. (On en reparle plus bas.)
Automatiser tes tâches de scraping avec Selenium et Python
Soyons clairs : personne n’a envie de lancer un script de scraping à 2h du mat. Heureusement, tu peux automatiser tes jobs Selenium avec les outils de planification Python ou ceux de ton système (cron sous Linux/Mac, Planificateur de tâches sous Windows).
Avec la bibliothèque schedule
1import schedule
2import time
3def job():
4 # Ton code de scraping ici
5 print("Scraping...")
6schedule.every().day.at("09:00").do(job)
7while True:
8 schedule.run_pending()
9 time.sleep(1)
Ou avec Cron (Linux/Mac)
Ajoute ça à ta crontab pour exécuter le script chaque heure :
10 * * * * python /chemin/vers/ton_script.py
Conseils pour l’automatisation :
- Lance Selenium en mode headless (voir plus bas) pour éviter les fenêtres qui s’ouvrent.
- Enregistre les erreurs et envoie-toi des alertes en cas de souci.
- Pense toujours à fermer le navigateur avec
driver.quit()pour libérer les ressources.
Gagner en efficacité : astuces pour un scraping Selenium plus rapide et fiable
Selenium, c’est puissant, mais ça peut vite devenir lent et gourmand si tu ne fais pas gaffe. Voici comment booster tes scripts et éviter les pièges classiques :
1. Utiliser le mode headless
Pas besoin de voir Chrome s’ouvrir et se fermer à chaque exécution. Le mode headless fait tourner le navigateur en arrière-plan :
1from selenium.webdriver.chrome.options import Options
2opts = Options()
3opts.headless = True
4driver = webdriver.Chrome(options=opts)
2. Bloquer les images et contenus inutiles
Pourquoi charger les images si tu ne veux que du texte ? Bloque-les pour accélérer le chargement :
1prefs = {"profile.managed_default_content_settings.images": 2}
2opts.add_experimental_option("prefs", prefs)
3. Utiliser des sélecteurs efficaces
- Privilégie les IDs ou sélecteurs CSS simples aux XPath compliqués.
- Évite
time.sleep(): préfère les attentes explicites (WebDriverWait).
4. Varier les délais
Ajoute des pauses aléatoires pour imiter la navigation humaine et éviter d’être bloqué :
1import random, time
2time.sleep(random.uniform(1, 3))
5. Changer d’agent utilisateur et d’IP (si besoin)
Si tu scrapes beaucoup, change régulièrement ton user agent et utilise des proxies pour contourner les blocages simples.
6. Gérer les sessions et les erreurs
- Utilise des blocs try/except pour gérer les éléments manquants sans faire planter le script.
- Enregistre les erreurs et prends des captures d’écran pour le débogage.
Pour plus d’astuces d’optimisation, va voir .
Aller plus loin : combiner Selenium et Thunderbit pour exporter des données structurées
C’est là que ça devient vraiment cool, surtout si tu veux gagner du temps sur le nettoyage et l’export des données.
Après avoir extrait des données brutes avec Selenium, tu peux utiliser pour :
- Détecter automatiquement les champs : L’IA de Thunderbit lit tes pages ou CSV et te propose des noms de colonnes (« IA Suggérer des champs »).
- Scraping de sous-pages : Si tu as une liste d’URLs (ex : pages produits), Thunderbit peut visiter chaque page et enrichir ton tableau sans une ligne de code en plus.
- Enrichissement des données : Traduire, catégoriser ou analyser tes données en temps réel.
- Export partout : Export en un clic vers Google Sheets, Airtable, Notion, CSV ou Excel.
Exemple de workflow :
- Utilise Selenium pour extraire une liste d’URLs et de titres de produits.
- Exporte les données en CSV.
- Ouvre Thunderbit, importe ton CSV et laisse l’IA suggérer les champs.
- Utilise le scraping de sous-pages pour récupérer plus de détails (images, specs…) sur chaque URL produit.
- Exporte ton jeu de données final et structuré vers Sheets ou Notion.
Cette combinaison te fait gagner des heures de nettoyage manuel et te permet de te concentrer sur l’analyse, pas sur la gestion de données brutes. Pour en savoir plus, checke .
Bonnes pratiques et dépannage pour le scraping web avec Selenium
Le scraping, c’est un peu comme la pêche : parfois tu fais une belle prise, parfois tu t’emmêles dans les algues. Voici comment garder tes scripts fiables… et éthiques :
Bonnes pratiques
- Respecte le robots.txt et les conditions d’utilisation : Vérifie toujours si le scraping est autorisé.
- Espace tes requêtes : N’inonde pas les serveurs, ajoute des délais et surveille les erreurs HTTP 429.
- Utilise les API si elles existent : Si les données sont publiques via une API, privilégie cette méthode, plus stable et légale.
- Ne scrape que des données publiques : Évite les infos perso ou sensibles, et respecte la législation sur la vie privée.
- Gère les pop-ups et CAPTCHAs : Utilise Selenium pour fermer les pop-ups, mais attention aux CAPTCHAs, c’est galère à automatiser.
- Varie les agents utilisateurs et les délais : Pour limiter les risques de blocage.
Erreurs courantes et solutions
| Erreur | Signification | Solution |
|---|---|---|
NoSuchElementException | Élément introuvable | Vérifie ton sélecteur ; utilise les attentes |
| Timeout errors | Page ou élément trop long à charger | Augmente le temps d’attente ; vérifie la connexion |
| Driver/browser mismatch | Impossible de lancer le navigateur | Mets à jour le driver et le navigateur |
| Session crashes | Fermeture inattendue du navigateur | Utilise le mode headless ; gère les ressources |
Pour plus de conseils de dépannage, va voir .
Conclusion & points clés à retenir
Le scraping dynamique n’est plus réservé aux pros du code. Avec Python Selenium, tu peux automatiser n’importe quel navigateur, interagir avec les sites les plus complexes et extraire les données dont tu as besoin, que ce soit pour la prospection, la veille ou juste par curiosité. À retenir :
- Selenium est la référence pour les sites dynamiques et interactifs.
- Trois étapes clés : installation, localisation, extraction & sauvegarde.
- Automatise tes scripts pour des mises à jour régulières.
- Optimise la vitesse et la fiabilité avec le mode headless, les attentes intelligentes et des sélecteurs efficaces.
- Combine Selenium et Thunderbit pour structurer et exporter facilement tes données, sans prise de tête sur les tableurs.
Envie de te lancer ? Teste les exemples de code ci-dessus, et quand tu veux passer à la vitesse supérieure, essaie pour un nettoyage et un export des données instantanés grâce à l’IA. Pour aller plus loin, va faire un tour sur le pour des tutos détaillés et les dernières nouveautés de l’automatisation web.
Bon scraping, et que tes sélecteurs tombent toujours sur la bonne donnée !
FAQ
1. Pourquoi utiliser Selenium pour le scraping web plutôt que BeautifulSoup ou Scrapy ?
Selenium est parfait pour extraire des données sur des sites dynamiques où le contenu s’affiche après des actions utilisateur ou du JavaScript. BeautifulSoup et Scrapy sont plus rapides pour le HTML statique, mais ne peuvent pas interagir avec des éléments dynamiques ou simuler des clics et des scrolls.
2. Comment accélérer mon extracteur Selenium ?
Utilise le mode headless, bloque les images et ressources inutiles, privilégie des sélecteurs efficaces et ajoute des délais aléatoires pour imiter la navigation humaine. Va voir pour plus d’astuces.
3. Puis-je planifier l’exécution automatique de mes scripts Selenium ?
Oui ! Utilise la bibliothèque Python schedule ou le planificateur de ton système (cron ou Planificateur de tâches) pour exécuter tes scripts à intervalles réguliers. L’automatisation permet de garder tes données à jour.
4. Quelle est la meilleure façon d’exporter les données extraites avec Selenium ?
Utilise Pandas pour sauvegarder en CSV ou Excel. Pour des exports avancés (Google Sheets, Notion, Airtable), importe tes données dans et profite de ses fonctions d’export en un clic.
5. Comment gérer les pop-ups et CAPTCHAs avec Selenium ?
Tu peux fermer les pop-ups en localisant et cliquant sur leur bouton de fermeture. Les CAPTCHAs sont bien plus complexes : si tu en rencontres, pense à une solution manuelle ou à un service de résolution de captcha, et respecte toujours les conditions d’utilisation du site.
Tu veux plus de tutos sur le scraping, des astuces d’automatisation IA ou découvrir les dernières solutions pour la donnée business ? Abonne-toi au ou passe sur notre pour des démos pratiques.
Pour aller plus loin