CodeGym /Cours Java /Python SELF FR /Extraction des textes et des attributs des éléments HTML ...

Extraction des textes et des attributs des éléments HTML à l'aide des méthodes BeautifulSoup

Python SELF FR
Niveau 32 , Leçon 0
Disponible

1. Introduction aux méthodes d'extraction de texte

Aujourd'hui, on va apprendre à extraire les précieuses données textuelles et attributs des éléments HTML. Rangez vos machettes, parce qu'avec BeautifulSoup, travailler avec du code, c'est presque comme se promener dans un verger en automne, où les pommes semblent dire "cueille-moi". Prêt à récolter les fruits de votre apprentissage ? Alors, let's go !

Les méthodes d'extraction de texte des éléments HTML sont en première position sur notre liste. Avant de commencer à extraire le texte, chargeons la page.

Python

import requests
from bs4 import BeautifulSoup

# Chargement du code HTML de la page
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

Maintenant, on a l'objet soup, qui contient une structure en arbre de notre document HTML. Extrayons du texte d'un élément tagué, par exemple, un titre.

Méthode .text et get_text()

La propriété .text et sa méthode équivalente get_text() permettent d'obtenir le contenu textuel d'un élément (et de tous ses sous-éléments).

Python

# Extraction du texte du premier titre h1 trouvé
h1_tag = soup.find('h1')
print(h1_tag.text)  # ou h1_tag.get_text()

Essayez-vous : trouvez d'autres éléments, en utilisant les méthodes de recherche que nous avons étudiées dans les leçons précédentes, et extrayez-en le texte. Vous serez surpris par la quantité d'informations accessibles !

2. Extraction des valeurs des attributs

Les textes c'est cool, mais parfois les données importantes sont cachées dans les attributs, un peu comme des passeports dans des poches. Imaginez que vous avez besoin de connaître l'adresse d'un lien ou d'obtenir l'URL d'une image (et ne me demandez pas pourquoi vous pourriez en avoir besoin ; peut-être avez-vous envie de collectionner des photos de chats).

Extraction des valeurs des attributs

Supposons qu'on ait un élément lien <a href="https://example.com">Example</a>. Comment obtenir la valeur href? C'est simple.

Python

# Extraction du lien
a_tag = soup.find('a')
link = a_tag['href']
print("Lien :", link)

Ce code extrait la valeur de l'attribut href. Si d'autres attributs utiles vous intéressent, vous pouvez les extraire de la même manière.

Essai pour extraire une image

Extraire une URL d'image peut être tout aussi simple. Prenons l'exemple de <img src="image.jpg" alt="Chat">.

Python

# Extraction de l'URL de l'image
img_tag = soup.find('img')
image_url = img_tag['src']
print("URL de l'image :", image_url)

Ce qui est génial avec BeautifulSoup, c'est qu'il permet de trouver et d'extraire facilement les données, sans nous obliger à penser à la complexité de la structure HTML.

3. Exemples d'extraction de textes et d'attributs

Passons maintenant aux exemples. Prenons une tâche un peu plus complexe : extraire tous les liens sur une page, avec le texte à l'intérieur des balises <a>.

Exemple : extraction de tous les liens avec texte

Python

# Recherche de toutes les balises a
a_tags = soup.find_all('a')

# Affichage du lien et du texte
for a_tag in a_tags:
    link = a_tag['href']
    text = a_tag.get_text()
    print(f"Texte : {text}, Lien : {link}")

Comme vous pouvez le voir, la méthode find_all permet de trouver tous les éléments qui répondent aux critères de recherche, et la boucle for permet de parcourir chacun d'entre eux.

4. Gestion des erreurs

N'oubliez pas de gérer les erreurs. Parfois, la structure HTML peut ne pas être comme prévu, ou un élément peut ne pas avoir l'attribut attendu. Assurez-vous que votre code ne "tombe" pas dans ces moments-là.

Python

# Exemple de gestion des erreurs lors de l'extraction d'un attribut
try:
    link = a_tag['href']
except KeyError:
    link = None
    print("L'attribut href n'a pas été trouvé !")

Cela rendra votre script plus robuste, et il ne s'arrêtera pas à cause d'une erreur non anticipée.

5. Application réelle

En 2019, un entrepreneur russe a partagé l'histoire de comment sa société, spécialisée dans le scraping de données, a atteint un chiffre d'affaires de 20 millions de roubles par an. Il a souligné que la collecte automatisée d'informations ne limite pas la concurrence, mais aide plutôt les entreprises à s'adapter au marché.

Par exemple, un client a commandé un scraper pour collecter quotidiennement les stocks disponibles sur le site du fournisseur, ce qui a permis de mettre à jour l'assortiment et les prix dans sa propre boutique en ligne. L'entrepreneur a également mentionné que, malgré les tentatives de certains sites de compliquer le scraping, les technologies modernes permettent de contourner efficacement ces obstacles, offrant ainsi aux entreprises l'accès aux données nécessaires pour prendre des décisions stratégiques.

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