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.
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).
# 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.
# 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">
.
# 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
# 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à.
# 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.
GO TO FULL VERSION