CodeGym /Cours /Python SELF FR /Extraction de textes et d’attributs avec Selenium

Extraction de textes et d’attributs avec Selenium

Python SELF FR
Niveau 36 , Leçon 2
Disponible

Salut, futurs pros de l’automatisation ! Aujourd’hui, on va voir comment utiliser Selenium pour extraire du texte et des attributs des éléments d’une page web. C’est un outil puissant dans ton arsenal, car dans le monde du web scraping, le plus important, c’est de savoir collecter les infos. Prêt à extraire des données utiles des profondeurs de l’internet ? Alors c’est parti !

1. De quoi parle cette leçon ?

  • Les bases de l’extraction des données : Comment tirer du texte d’éléments HTML, ce qui en soi semble déjà être un exploit.
  • Récupération des attributs : Comment extraire des trucs stylés comme les liens (href) et les images (src), histoire de faire des trucs incroyables avec après.
  • Exemples concrets : On va essayer en pratique d’extraire des données de tableaux et de listes sur une page web. Comme disait un grand programmeur : "Si t’as pas touché le code de tes propres mains, t’as pas vraiment compris.".

2. Extraction de textes depuis des éléments

Imaginons que tu as un super site web avec plein d’infos utiles. Tu veux récupérer du texte d’éléments comme les titres, les paragraphes et d’autres éléments HTML. Comment faire ? C’est là que Selenium entre en scène.

Exemple

Python

from selenium import webdriver

# Configurer le driver pour Chrome
driver = webdriver.Chrome()

# Ouvrir le site
driver.get("https://example.com")

# Trouver un élément par classe et extraire le texte
element = driver.find_element_by_class_name("example-class")
text = element.text
print("Texte extrait :", text)

# N'oublie pas de fermer le navigateur
driver.quit()

Ici, on utilise la méthode .text pour récupérer le contenu textuel d’un élément. Plus simple que d'apprendre toutes les exceptions de Python, non ?

3. Extraction d’attributs depuis des éléments

Le texte, c’est génial, mais que faire si tu veux récupérer quelque chose de plus spécifique comme une URL ou un lien vers une image ? Selenium ne te laissera pas tomber non plus ici.

Exemple

Python

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://example.com")

# Trouver un élément avec un sélecteur CSS et extraire l'attribut 'href'
link_element = driver.find_element_by_css_selector("a.link-class")
link_href = link_element.get_attribute("href")
print("URL du lien :", link_href)

# Trouver un élément par ID et extraire l'attribut 'src'
img_element = driver.find_element_by_id("logo")
img_src = img_element.get_attribute("src")
print("URL de l'image :", img_src)

driver.quit()

Comme tu vois, c’est presque pareil, sauf qu’au lieu d’utiliser .text, on utilise la méthode .get_attribute("nom_attribut"). Simple à utiliser, mais super puissant en pratique.

4. Application pratique des méthodes

On passe de la théorie à la pratique, parce que les devs n’aiment pas rester trop longtemps dans l’abstrait. Prenons un exemple où on extrait des données depuis un tableau sur une page web.

Extraction de données depuis des tableaux

Disons que tu veux extraire toutes les lignes d’un tableau sur un site et les afficher dans la console. Voilà comment faire :

Python

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://example.com")

# Trouver le tableau par ID
table = driver.find_element_by_id("example-table")

# Trouver toutes les lignes du tableau
rows = table.find_elements_by_tag_name("tr")

for row in rows:
    # Trouver toutes les cellules dans la ligne actuelle
    cells = row.find_elements_by_tag_name("td")
    for cell in cells:
        print(cell.text, end=' ')
    print()

driver.quit()

D’abord, on trouve le tableau lui-même, puis on parcourt toutes ses lignes et cellules pour en extraire et afficher les textes. C’est comme démêler une toile compliquée, mais au final, tout devient clair et simple !

5. Erreurs fréquentes et comment les éviter

Avant qu’on ne se lance dans les aventures codées de l’extraction des données, parlons des erreurs fréquentes auxquelles tu peux être confronté.

Quand tu travailles avec des pages dynamiques, le temps peut jouer contre toi. Si tu essayes d’obtenir le texte ou un attribut d’un élément qui n’est pas encore chargé, tu auras une erreur NoSuchElementException. C’est comme essayer de deviner un cadeau avant qu’il n’arrive. Pour éviter cela, utilise les attentes explicites (WebDriverWait) au lieu de compter sur un miracle.

Python

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()

driver.get("https://example.com")

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "lazy-class"))
    )
    print(element.text)
finally:
    driver.quit()

Ici, on utilise WebDriverWait et expected_conditions pour attendre le chargement de l’élément. C’est comme attendre que le plat soit prêt avant de passer à table, pour en profiter au max.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION