Retour au blog
Guides
Andrei Ogiolan11 avril 202310 min de lecture

Découvrez comment extraire les données d'un tableau HTML avec Python

Découvrez comment extraire les données d'un tableau HTML avec Python

Introduction

Le web scraping est un outil puissant qui permet d'extraire des données de sites web et de les utiliser à diverses fins, telles que l'exploration de données, l'analyse de données et l'apprentissage automatique. Une tâche courante en web scraping consiste à extraire des données de tableaux HTML, que l'on trouve sur de nombreux sites web et qui sont utilisés pour présenter des données sous un format structuré et tabulaire. Dans cet article, nous allons apprendre à utiliser Python pour extraire des données de tableaux HTML et les stocker dans un format facile à manipuler et à analyser.

À la fin de cet article, vous disposerez des compétences et des connaissances nécessaires pour créer votre propre outil de web scraping capable d’extraire des données de tableaux HTML et de les utiliser à diverses fins. Que vous soyez un data scientist cherchant à collecter des données pour votre prochain projet, un chef d’entreprise souhaitant recueillir des données pour une étude de marché, ou un développeur désireux de créer votre propre outil de web scraping, cet article constituera une ressource précieuse pour vous lancer dans l’extraction de données de tableaux HTML à l’aide de Python.

Que sont les tableaux HTML ?

Les tableaux HTML sont un type d’élément en HTML (Hypertext Markup Language) utilisé pour représenter des données tabulaires sur une page web. Un tableau HTML se compose de lignes et de colonnes de cellules, qui peuvent contenir du texte, des images ou d’autres éléments HTML. Les tableaux HTML sont créés à l’aide de l’élément table et sont structurés à l’aide des balises « <tr> » (ligne de tableau), «<td> (cellule de tableau), « <th> » (en-tête de tableau), « <caption> », « <col> », « <colgroup> », « <tbody> » (corps du tableau), « <thead> » (en-tête du tableau) et « <tfoot> » (pied de tableau). Passons maintenant en revue chacun d'entre eux plus en détail :

  • Élément table : définit le début et la fin d’un tableau HTML.
  • Élément tr (ligne de tableau) : définit une ligne dans un tableau HTML.
  • Élément td (cellule de tableau) : définit une cellule dans un tableau HTML.
  • Élément th (en-tête de tableau) : définit une cellule d'en-tête dans un tableau HTML. Les cellules d'en-tête s'affichent en gras et centrées par défaut, et servent à nommer les lignes ou les colonnes du tableau.
  • Élément caption : définit une légende ou un titre pour un tableau HTML. La légende s'affiche généralement au-dessus ou en dessous du tableau.
  • Éléments col et colgroup : définissent les propriétés des colonnes d'un tableau HTML, telles que la largeur ou l'alignement.
  • Éléments tbody, thead et tfoot : définissent respectivement les sections corps, en-tête et pied de page d'un tableau HTML. Ces éléments peuvent être utilisés pour regrouper des lignes et appliquer des styles ou des attributs à une section spécifique du tableau.

Pour mieux comprendre ce concept, voyons à quoi ressemble un tableau HTML :

Example HTML table listing companies, contacts, and countries

À première vue, cela ressemble à un tableau normal et nous ne pouvons pas voir la structure avec les éléments décrits ci-dessus. Cela ne signifie pas qu'ils ne sont pas présents, mais que le navigateur les a déjà analysés pour nous. Pour pouvoir voir la structure HTML, vous devez aller un peu plus loin et utiliser les outils de développement. Pour ce faire, cliquez avec le bouton droit de la souris sur la page, sélectionnez « Inspecter », cliquez sur l'outil « Sélectionner un élément », puis cliquez sur l'élément (dans ce cas, la table) dont vous souhaitez voir la structure HTML. Après avoir suivi ces étapes, vous devriez voir quelque chose comme ceci :

HTML tables tutorial page with an example table, alongside browser devtools highlighting the table markup

Les tableaux HTML sont couramment utilisés pour présenter des données sous un format structuré et tabulaire, par exemple pour présenter des résultats sous forme de tableau ou afficher le contenu d’une base de données. On les trouve sur une grande variété de sites web et ils constituent un élément important à prendre en compte lors de l’extraction de données sur le web.

Configuration

Avant de pouvoir commencer à extraire des données à partir de tableaux HTML, nous devons configurer notre environnement et nous assurer que tous les outils et bibliothèques nécessaires sont installés. La première étape consiste à vérifier que Python est bien installé sur votre ordinateur. Si ce n'est pas le cas, vous pouvez le télécharger depuis le site officiel de Python (https://www.python.org/) et suivre les instructions pour l'installer.

Ensuite, nous devrons installer certaines bibliothèques qui nous aideront à extraire des données à partir de tableaux HTML. Parmi les bibliothèques les plus populaires pour le web scraping en Python, on trouve Beautiful Soup, Selenium et Scrapy. Dans cet article, nous nous concentrerons sur l'utilisation de Beautiful Soup, car elle est très simple à utiliser par rapport aux autres. Beautiful Soup est une bibliothèque qui facilite l'analyse des documents HTML et XML, et qui est particulièrement utile pour extraire des données de pages web. Bien que cela suffise pour extraire les données HTML que nous recherchons, celles-ci ne seront pas très lisibles à l'œil nu au format HTML ; vous souhaiterez donc peut-être les analyser d'une manière ou d'une autre. C'est là que la bibliothèque Pandas entre en jeu.

Pandas est une bibliothèque d'analyse de données qui fournit des outils pour travailler avec des données structurées, telles que les tableaux HTML. Vous pouvez installer ces bibliothèques à l'aide du gestionnaire de paquets pip, qui est inclus avec Python :

$ pip install beautifulsoup4 pandas

Une fois que Python et les bibliothèques nécessaires sont installés, vous êtes prêt à commencer à extraire des données à partir de tableaux HTML. Dans la section suivante, nous allons passer en revue les étapes de création d'un scraper web capable d'extraire des données d'un tableau HTML et de les stocker dans un format structuré.

Commençons l&#x27;extraction

Maintenant que notre environnement est configuré et que nous avons une compréhension de base des tableaux HTML, nous pouvons commencer à créer un scraper web pour extraire des données d’un tableau HTML. Dans cette section, nous allons passer en revue les étapes de la création d’un scraper simple capable d’extraire des données d’un tableau et de les stocker dans un format structuré.

La première étape consiste à utiliser la bibliothèque requests pour envoyer une requête HTTP à la page web contenant le tableau HTML que nous souhaitons extraire.

Vous pouvez l'installer à l'aide de pip, comme n'importe quel autre paquet Python :

$ pip install requests

Cette bibliothèque nous permet de récupérer le contenu HTML d'une page web sous forme de chaîne de caractères :

import requests

url = 'https://www.w3schools.com/html/html_tables.asp'

html = requests.get(url).text

Ensuite, nous utiliserons la bibliothèque BeautifulSoup pour analyser le contenu HTML et extraire les données du tableau. BeautifulSoup fournit une variété de méthodes et d'attributs qui facilitent la navigation et l'extraction de données à partir d'un document HTML. Voici un exemple illustrant comment l'utiliser pour trouver l'élément tableau et extraire les données des cellules :

soup = BeautifulSoup(html, 'html.parser')

# Find the table element

table = soup.find('table')

# Extract the data from the cells

data = []

for row in table.find_all('tr'):

   cols = row.find_all('td')

   # Extracting the table headers

   if len(cols) == 0:

       cols = row.find_all('th')

   cols = [ele.text.strip() for ele in cols]

   data.append([ele for ele in cols if ele])  # Get rid of empty values

print(data)

Le tableau de données 2D est désormais rempli des valeurs des lignes et des colonnes du tableau. Pour le rendre plus lisible, nous pouvons désormais transférer très facilement le contenu vers un DataFrame Pandas :

import pandas as pd

# Getting the headers from the data array

# It is important to remove them from the data array afterwards in order to be parsed correctly by Pandas

headers = data.pop(0)

df = pd.DataFrame(data, columns=headers)

print(df)

Une fois les données extraites du tableau, vous pouvez les utiliser à diverses fins, telles que l'analyse de données, l'apprentissage automatique ou le stockage dans une base de données. Vous pouvez également modifier le code pour extraire plusieurs tableaux d'une même page web ou de plusieurs pages web.

Gardez à l'esprit que tous les sites web sur Internet ne permettent pas d'extraire des données aussi facilement. Beaucoup d'entre eux ont mis en place des mesures de protection de haut niveau conçues pour empêcher le scraping, telles que les CAPTCHA et le blocage des adresses IP, mais heureusement, il existe des services tiers tels que WebScrapingAPI qui proposent la rotation d'IP et le contournement des CAPTCHA, vous permettant ainsi d'extraire les données de ces cibles.

J'espère que cette section vous a fourni un aperçu utile du processus d'extraction de données à partir d'un tableau HTML à l'aide de Python. Dans la section suivante, nous aborderons certaines des façons dont vous pouvez améliorer ce processus ainsi que les meilleures pratiques en matière de web scraping.

Aller plus loin

Bien que le scraper que nous avons créé dans la section précédente soit fonctionnel et capable d'extraire des données d'un tableau HTML, il existe plusieurs façons de l'améliorer et de l'optimiser pour le rendre plus efficace et performant. Voici quelques suggestions :

  • Gestion de la pagination : si le tableau HTML que vous extraitez s'étend sur plusieurs pages, vous devrez modifier le scraper pour qu'il gère la pagination et extraie les données de toutes les pages. Cela peut généralement être fait en suivant des liens ou en utilisant un contrôle de pagination, tel qu'un bouton « suivant », pour naviguer vers la page suivante de données.
  • Gestion d'AJAX : si le tableau HTML est généré à l'aide d'AJAX ou de JavaScript, vous devrez peut-être utiliser un outil tel que Selenium pour exécuter le JavaScript et charger les données dans le tableau. Selenium est une bibliothèque de tests web capable de simuler l'interaction d'un utilisateur avec une page web et vous permettant d'extraire des données générées dynamiquement. Une bonne alternative consiste à utiliser notre scraper, qui peut renvoyer les données une fois que le JavaScript a été rendu sur la page. Pour en savoir plus, consultez notre documentation.
  • Gestion des erreurs : il est important de gérer les erreurs et les exceptions de manière élégante dans votre scraper, car des problèmes de réseau ou de serveur peuvent entraîner l'échec des requêtes ou des données incomplètes. Vous pouvez utiliser des blocs try/except pour intercepter les exceptions et les gérer de manière appropriée, par exemple en réessayant la requête ou en consignant l'erreur.
  • Mise à l'échelle du scraper : Si vous devez extraire une grande quantité de données à partir de plusieurs tables ou sites web, vous devrez peut-être mettre à l'échelle votre scraper pour gérer la charge de travail accrue. Cela peut être réalisé à l'aide de techniques telles que le traitement parallèle ou la répartition du travail sur plusieurs machines.

En améliorant et en optimisant votre scraper web, vous pouvez extraire des données de manière plus efficace et efficiente, et vous assurer que votre scraper est fiable et évolutif. Dans la section suivante, nous verrons pourquoi le recours à un service de scraping professionnel peut être une meilleure option que de créer votre propre scraper.

Résumé

Dans cet article, nous avons abordé les bases du web scraping et vous avons montré comment créer un simple scraper Python pour extraire des données d'un tableau HTML. Bien que la création de votre propre scraper puisse être un exercice utile et formateur, il existe plusieurs raisons pour lesquelles le recours à un service de scraping professionnel peut s'avérer une meilleure option dans de nombreux cas :

  • Les scrapers professionnels sont généralement plus fiables et plus efficaces, car ils sont conçus et optimisés pour le web scraping à grande échelle.
  • Les scrapers professionnels disposent souvent de fonctionnalités et de capacités qui ne sont pas disponibles dans les scrapers faits maison, telles que la prise en charge des CAPTCHA, la limitation de débit et la gestion d'AJAX et de JavaScript.
  • L'utilisation d'un scraper professionnel peut vous faire gagner du temps et économiser des ressources, car vous n'avez pas à créer et à maintenir votre propre scraper.
  • Les scrapers professionnels proposent souvent différentes options tarifaires et peuvent s'avérer plus rentables que de créer votre propre scraper, en particulier si vous devez extraire de grandes quantités de données.

Bien que la création de votre propre scraper puisse être une expérience enrichissante, il est souvent plus pratique et plus rentable de recourir à un service de scraping professionnel. En fin de compte, la décision de créer votre propre scraper ou d’utiliser un service professionnel dépendra de vos besoins spécifiques et de vos ressources.

J'espère que cet article vous a fourni un aperçu utile du web scraping et du processus de création d'un simple scraper de tableaux HTML avec Python.

À propos de l'auteur
Andrei Ogiolan, Développeur Full Stack @ WebScrapingAPI
Andrei OgiolanDéveloppeur Full Stack

Andrei Ogiolan est développeur Full Stack chez WebScrapingAPI ; il participe à l'ensemble du produit et contribue à la mise au point d'outils et de fonctionnalités fiables pour la plateforme.

Commencez à créer

Prêt à faire évoluer votre système de collecte de données ?

Rejoignez plus de 2 000 entreprises qui utilisent WebScrapingAPI pour extraire des données Web à l'échelle de l'entreprise, sans aucun coût d'infrastructure.