beautifulsoup

Introduction à BeautifulSoup : Web Scraping avec Python

Après vous avoir introduit à la bibliothèque Selenium de Python dans le dernier article. Aujourd’hui on va essayer de voir ensemble la bibliothèque BeautifulSoup qui est également très utilisée pour le Web Scraping principalement sur des sites statiques.

Une fois encore cette librairie propose une documentation assez complète avec des fonctionnalités bien détaillées si jamais vous voulez en apprendre plus n’hésitez pas à aller regarder ici.

Introduction à BeautifulSoup : Web Scraping avec Python

Prérequis pour l’utilisation de BeautifulSoup

Contrairement à Selenium, qui nécessite pas mal de travail de mise en place, BeautifulSoup ne nécessite pas réellement de setup au niveau de l’environnement de développement. Il suffit simplement d’importer les bibliothèques nécessaires.

En plus de BeautifulSoup on va avoir besoin d’une deuxième bibliothèque pour pouvoir gérer les requêtes HTTP : Requests et Urllib sont les deux plus utilisées. Dans le tutoriel suivant, on va utiliser Requests qui a, selon moi, une meilleure documentation que vous pouvez consulter ici.

On va donc commencer par importer les bibliothèques dont on aura besoin :

from bs4 import BeautifulSoup
import pandas as pd
import requests

Requête au site web

On stocke le lien du site d’où l’on souhaite extraire les données dans une variable url, que l’on va ensuite passer en argument de la fonction get de Requests qui, comme son nom l’indique, envoie une requête GET à l’url spécifié.

url = 'https://fr.wikipedia.org/wiki/Liste_des_pays_par_population'
response = requests.get(url)
protocole http, scraping avec beautifulsoup
Protocole HTTP

Récupération du code HTML avec BeautifulSoup

Une fois qu’on a préparé nos données en récupérant la réponse à notre requête GET dans une variable response, on va extraire le code HTML de la page. Il est présent dans l’attribut text de notre réponse avec la fonction BeautifulSoup.

soup = BeautifulSoup(response.text)

On obtient donc une ‘soupe‘ de code HTML qui est de type bs4.BeautifulSoup. Ce type permet beaucoup plus de complexité et de méthodes qu’une simple chaîne de caractères Python.

Introduction à BeautifulSoup : Web Scraping avec Python

Récupération des données

Maintenant que nous avons notre ‘soupe‘ de code HTML il existe différentes méthodes BeautifulSoup pour récupérer les données. Il faut donc décider en fonction du type de donnée que l’on souhaite récupérer et de comment on souhaite les stocker.

Dans notre cas, le site d’où l’on souhaite extraire les données est une page Wikipédia qui recense la population mondiale par pays dans un tableau. On va donc utiliser la fonction find_all avec comme argument table, et enfin on stocke les données récupérées dans un Data Frame de Pandas.

data = soup.find_all('table')[0]
df = pd.read_html(str(data))[0]

Vérification et conversion

Pour finir si jamais on souhaite s’assurer que le Web Scraping est réussi et qu’on a effectivement récupéré toutes les données souhaitées, on peut utiliser les fonctions de Pandas.

df.head()
df.describe(
df.to_csv(r"world_population_by_country.csv", index = None, header = True)

Conclusion

Vous pouvez retrouver l’ensemble des codes sur Google Colab ici !

Vous avez maintenant toutes les clés en main pour devenir des experts du Web Scraping, à vous de jouer et de découvrir tous les trésors cachés de BeautifulSoup !

N’hésitez pas à demander en commentaire si vous avez besoin d’aide 🙂