CodeGym /Cours /Python SELF FR /Travailler avec BeautifulSoup et extraire des information...

Travailler avec BeautifulSoup et extraire des informations

Python SELF FR
Niveau 31 , Leçon 1
Disponible

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

<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 :

Bash

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 :

Python

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 :

Python

# 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 :

Python

# 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 :

Python

# 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 :

Python

# 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 !

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