Si tu penses que les pages web ne sont que de jolies images et du texte, j'ai une nouvelle pour toi : ce sont comme des oignons — elles ont plusieurs couches et peuvent te faire pleurer (de joie, bien sûr !) quand tu réalises combien de données tu peux en extraire. Aujourd'hui, on va fouiller dans les pages HTML avec la bibliothèque BeautifulSoup
. Prends ta pelle virtuelle — c'est parti !
1. Analyse des documents HTML
Pages simples
On va explorer quelques documents HTML simples pour comprendre de quoi ils sont constitués et quels éléments pourraient être intéressants à extraire.
Exemple d'une page de news :
<html>
<head>
<title>Actualités</title>
</head>
<body>
<h1>La principale actualité du jour</h1>
<p>Quelque chose d'important s'est passé aujourd'hui !</p>
</body>
</html>
Dans cet exemple, h1
contient le titre de l'article, et p
— le texte principal.
Impact de la structure HTML sur le scraping
Avant d'utiliser BeautifulSoup
, il est important de comprendre comment est structurée la page HTML que tu veux analyser. Cela nous permet d'identifier quelles parties de la page contiennent les données utiles. Par exemple, si tu cherches le titre de la page, regarde dans <h1>
, et pour extraire une liste, utilise <ul>
et <li>
.
Se préparer au scraping
Avant de commencer à extraire des données, il est crucial de repérer les balises clés et leurs attributs. Par exemple, si les développeurs web ont balisé les données sur leur page avec un attribut comme class="headline"
pour le titre, cela te sera très utile. Utilise les outils de développement de ton navigateur pour analyser la structure HTML. Clique droit sur un élément et choisis "Inspecter"
(dans Google Chrome).
2. Installation et configuration des bibliothèques
Installer BeautifulSoup
et requests
Pour travailler avec HTML, on va utiliser la bibliothèque BeautifulSoup
. En plus, pour charger des pages HTML, on aura besoin de requests
. L'installation est simple et ne nécessite que quelques commandes dans ton terminal :
pip install beautifulsoup4 requests
Collaboration entre requests et BeautifulSoup
Requests te permet de récupérer l'HTML d'une page web, et BeautifulSoup
t'aide à l'analyser. Regardons comment cela fonctionne en pratique :
import requests
from bs4 import BeautifulSoup
# Téléchargement de la page
url = 'https://example.com'
response = requests.get(url)
# Analyse de la page avec BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
# Extraire le titre de la page
title = soup.title.text
print('Titre :', title)
3. Navigation et extraction de données avec des balises
Méthodes de navigation
Maintenant qu'on a un document HTML, on peut utiliser BeautifulSoup
pour y naviguer. Une méthode géniale, .select()
, permet d'extraire des données à l'aide de sélecteurs CSS.
Extraction de données par balises
BeautifulSoup
fournit des méthodes pour trouver des éléments par leurs balises, comme find
et find_all
. Cela t'aidera à trouver les précieuses données :
# Trouver le premier paragraphe
paragraph = soup.find('p').text
print('Premier paragraphe :', paragraph)
# Trouver tous les éléments de liste
list_items = soup.find_all('li')
for item in list_items:
print('Élément de liste :', item.text)
Utilisation des attributs pour filtrer
Parfois, tu voudras extraire des éléments correspondant à certains critères, comme avoir un certain class
. BeautifulSoup
permet de le faire facilement :
# Extraire un élément avec une classe spécifique
headline = soup.find('h1', class_='main-headline').text
print('Titre :', headline)
4. Utilisation des sélecteurs CSS
Qu'est-ce que les sélecteurs CSS ?
Les sélecteurs CSS sont un outil puissant pour un programmeur Python, qui te permettent d'extraire des données selon des critères spécifiques. Ils peuvent être utilisés pour trouver des éléments partageant des styles communs, ce qui rend le scraping plus flexible et précis.
Utilisation des sélecteurs avec BeautifulSoup
BeautifulSoup
permet d'utiliser les sélecteurs CSS via la méthode select
. Par exemple :
# Sélectionner tous les liens
links = soup.select('a')
for link in links:
print('Lien :', link['href'])
Tu peux même combiner des sélecteurs pour des choix plus précis. Par exemple, soup.select('div.article h2')
sélectionnera tous les h2
à l'intérieur des div
avec la classe article
.
Exemples de recherche avec des sélecteurs CSS
Appliquons nos connaissances. Sélectionne tous les paragraphes avec la classe highlight
et affiche leur texte :
# Extraire tous les paragraphes avec la classe 'highlight'
highlighted_paragraphs = soup.select('p.highlight')
for para in highlighted_paragraphs:
print('Paragraphe en surbrillance :', para.text)
C'est tout pour l'instant, n'oublie pas de pratiquer tes compétences en scraping jusqu'à la prochaine fois. Bonne chance dans le monde passionnant du parsing !
GO TO FULL VERSION