Récupérer des données avec Selenium
Selenium est une bibliothèque Python utilisée pour automatiser l’interaction avec des pages web dynamiques. Contrairement à BeautifulSoup et Scrapy, qui sont principalement utilisés pour scraper des pages statiques, Selenium est particulièrement utile pour récupérer des données sur des sites web qui utilisent du JavaScript pour charger du contenu. En simulant un navigateur web réel, Selenium permet d’interagir avec la page, de cliquer sur des boutons, de remplir des formulaires, et de récupérer des informations une fois que le contenu est chargé dynamiquement. C’est une solution idéale pour les pages nécessitant des actions utilisateur avant de rendre leur contenu ou lorsque des interactions complexes sont nécessaires pour accéder aux données.
Fonctions :
-
selenium.webdriver.Chrome
Selenium est un outil pour l'automatisation des navigateurs web, permettant de simuler des interactions avec des pages web (cliquer, remplir des formulaires, récupérer des données). Il est utile notamment pour scraper des pages générées dynamiquement par JavaScript.
Importation :
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys
Attributs :
Paramètre Description driver
Instance de webdriver.Chrome()
ouwebdriver.Firefox()
, utilisée pour contrôler le navigateur.find_element_by_*
Méthodes permettant de localiser un élément HTML dans la page (par exemple, find_element_by_id
,find_element_by_xpath
, etc.).get()
Méthode pour ouvrir une URL dans le navigateur contrôlé par Selenium. page_source
Attribut qui permet de récupérer le code source HTML complet de la page après exécution de JavaScript. quit()
Méthode pour fermer le navigateur contrôlé par Selenium. Exemple de code :
from selenium import webdriver from selenium.webdriver.common.by import By # Initialisation du WebDriver driver = webdriver.Chrome(executable_path='/path/to/chromedriver') # Ouvrir une page web driver.get("https://www.example.com") # Extraire un élément par son ID element = driver.find_element(By.ID, "some-id") print(element.text) # Extraire un élément par sa classe button = driver.find_element(By.CLASS_NAME, "some-class") button.click() # Cliquer sur un bouton # Extraire plusieurs éléments (par exemple, tous les liens de la page) links = driver.find_elements(By.TAG_NAME, "a") for link in links: print(link.get_attribute("href")) # Fermer le navigateur driver.quit()
Explication du code :
- Importation : Le module
webdriver
est importé depuisselenium
pour manipuler le navigateur, ainsi queBy
pour localiser les éléments HTML dans la page. - Initialisation du WebDriver : Le WebDriver pour Chrome est initialisé avec
webdriver.Chrome()
. Il est nécessaire de spécifier le chemin du fichierchromedriver
si ce dernier n'est pas dans le PATH. - Navigation : On utilise
driver.get()
pour ouvrir l'URL souhaitée dans le navigateur. - Extraction d'éléments :
- On peut extraire un élément spécifique en utilisant des méthodes comme
find_element(By.ID, "id")
,find_element(By.CLASS_NAME, "class")
, oufind_element(By.TAG_NAME, "tag")
. - Pour obtenir le texte de l'élément, on utilise
element.text
.
- On peut extraire un élément spécifique en utilisant des méthodes comme
- Interaction avec la page : Pour interagir avec un élément, par exemple en cliquant sur un bouton, on utilise
element.click()
. - Extraction de plusieurs éléments : Avec
find_elements(By.TAG_NAME, "a")
, on récupère tous les liens (balises<a>
) de la page. - Fermeture : Une fois l'extraction terminée, on ferme le navigateur avec
driver.quit()
.
Prérequis :
- Il est nécessaire d'avoir installé Selenium avec
pip install selenium
. - Il faut également télécharger et installer le bon WebDriver (par exemple,
chromedriver
pour Google Chrome ougeckodriver
pour Firefox).
Ce bloc de code montre comment utiliser Selenium pour scraper des pages web dynamiques en extrayant des éléments, en interagissant avec la page (comme cliquer sur un bouton) et en fermant proprement le navigateur.
- Importation : Le module