Découvrez comment récupérer un tableau HTML avec Python
Andrei Ogiolan le 11 avril 2023

Introduction
Le web scraping est un outil puissant qui vous permet d'extraire des données de sites web et de les utiliser à diverses fins, telles que le data mining, l'analyse de données et l'apprentissage automatique. L'une des tâches courantes du web scraping est l'extraction de données à partir de tableaux HTML, que l'on trouve sur de nombreux sites web et qui sont utilisés pour présenter des données dans 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 à travailler et à analyser.
À la fin de cet article, vous aurez acquis les compétences et les connaissances nécessaires pour créer votre propre outil de récupération de données sur le web, capable d'extraire des données de tableaux HTML et de les utiliser à des fins diverses. Que vous soyez un data scientist cherchant à collecter des données pour votre prochain projet, un chef d'entreprise cherchant à collecter des données pour une étude de marché, ou un développeur cherchant à construire son propre outil de web scraping, cet article vous fournira une ressource précieuse pour démarrer avec le HTML table scraping en utilisant Python.
Qu'est-ce qu'un tableau HTML ?
HTML tables are a type of element in HTML (Hypertext Markup Language) that is used to represent tabular data on a web page. An HTML table consists of rows and columns of cells, which can contain text, images, or other HTML elements. HTML tables are created using the table element, and are structured using the ‘<tr>’ (table row) ,‘<td>’ (table cell), ‘<th>’ (table header), ‘<caption>’ , ‘<col>’, ‘<colgroup>’, ‘<tbody>’ (table body), ‘<thead>’ (table head) and ‘<tfoot>’ (table foot) elements. Now let’s go through each one and get in more detail:
- élément table : Définit le début et la fin d'un tableau HTML.
- L'élément tr (table row) : Définit une ligne dans un tableau HTML.
- Élément td (cellule de tableau) : Définit une cellule dans un tableau HTML.
- th (en-tête de tableau) : Définit une cellule d'en-tête dans un tableau HTML. Les cellules d'en-tête sont affichées en gras et centrées par défaut, et sont utilisées pour étiqueter les lignes ou les colonnes du tableau.
- l'élément caption : Définit une légende ou un titre pour un tableau HTML. La légende est généralement affichée au-dessus ou au-dessous du tableau.
- Les éléments col et colgroup : Définissent les propriétés des colonnes d'un tableau HTML, telles que la largeur ou l'alignement.
- tbody, thead et tfoot : Définissent respectivement les sections "body", "head" et "foot" 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 :

À première vue, il semble s'agir d'un tableau normal et nous ne pouvons pas voir de 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 être en mesure de voir la structure HTML, vous devez aller un peu plus loin et utiliser les outils de développement. Vous pouvez le faire en faisant un clic droit sur la page, en cliquant sur inspect, en cliquant sur select element tool et en cliquant sur l'élément (tableau dans ce cas) dont vous voulez voir la structure HTML. Après avoir suivi ces étapes, vous devriez voir quelque chose comme ceci :

Les tableaux HTML sont couramment utilisés pour présenter des données dans un format structuré et tabulaire, par exemple pour compiler des résultats ou afficher le contenu d'une base de données. On les trouve sur un grand nombre de sites web et ils constituent un élément important à prendre en compte lors de l'extraction de données sur le web.
Mise en place
Avant de commencer à extraire des données 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 à s'assurer que Python est installé sur votre ordinateur. Si ce n'est pas le cas, vous pouvez le télécharger sur le site officiel de Python(https://www.python.org/) et suivre les instructions pour l'installer.
Ensuite, nous devrons installer quelques bibliothèques qui nous aideront à extraire des données de tableaux HTML. Certaines des bibliothèques les plus populaires pour le web scraping en Python sont Beautiful Soup, Selenium et Scrapy. Dans cet article, nous nous concentrerons sur l'utilisation de Beautiful Soup, car elle est très simple comparée 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 soit suffisant pour extraire les données HTML que nous recherchons, elles ne seront pas très lisibles pour l'œil humain dans le format HTML, vous voudrez donc peut-être analyser les données d'une manière ou d'une autre. C'est à ce moment 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 des tableaux HTML. Vous pouvez installer ces bibliothèques à l'aide du gestionnaire de paquets pip, qui est inclus dans 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 de tableaux HTML. Dans la section suivante, nous verrons les étapes de la construction d'un scraper web capable d'extraire des données d'un tableau HTML et de les stocker dans un format structuré.
Commençons à gratter
Maintenant que notre environnement est configuré et que nous avons une compréhension de base des tableaux HTML, nous pouvons commencer à construire un scraper web pour extraire des données d'un tableau HTML. Dans cette section, nous allons suivre les étapes de la construction d'un simple scraper 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 qui contient le tableau HTML que nous voulons récupérer.
Vous pouvez l'installer à l'aide de pip, comme n'importe quel autre paquetage Python :
pip install requests
Cette bibliothèque permet de récupérer le contenu HTML d'une page web sous la forme d'une chaîne de caractères :
demandes d'importation
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 des données d'un document HTML. Voici un exemple de son utilisation pour trouver l'élément tableau et extraire les données des cellules :
soup = BeautifulSoup(html, 'html.parser')
# Trouver l'élément table
table = soup.find('table')
# Extraire les données des cellules
data = []
for row in table.find_all('tr') :
cols = row.find_all('td')
# Extraction des en-têtes du tableau
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]) # Se débarrasser des valeurs vides
print(data)
Le tableau de données 2D est maintenant rempli avec les valeurs des lignes et des colonnes du tableau. Pour qu'il soit plus lisible, nous pouvons maintenant passer le contenu à un Dataframe Pandas très facilement :
import pandas as pd
# Récupérer les en-têtes du tableau de données
# Il est important de les retirer du tableau de données par la suite afin qu'ils soient analysés correctement par 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 des 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.
N'oubliez pas que tous les sites web ne sont pas aussi faciles à pirater. Beaucoup d'entre eux ont mis en place des mesures de protection de haut niveau conçues pour empêcher le scraping, comme les CAPTCHA et le blocage des adresses IP, mais heureusement il existe des services tiers comme WebScrapingAPI qui offrent la rotation des adresses IP et le contournement des CAPTCHA, ce qui vous permet de scraper ces cibles.
J'espère que cette section vous a donné un aperçu utile du processus de récupération des données d'un tableau HTML à l'aide de Python. Dans la prochaine section, nous discuterons des moyens d'améliorer ce processus et des meilleures pratiques en matière de scraping web.
Devenir plus avancé
Bien que le scraper que nous avons construit dans la section précédente soit fonctionnel et puisse extraire des données d'un tableau HTML, il y a plusieurs façons de l'améliorer et de l'optimiser pour le rendre plus efficace. Voici quelques suggestions :
- Gestion de la pagination : Si le tableau HTML que vous récupérez est réparti sur plusieurs pages, vous devrez modifier le scraper pour qu'il gère la pagination et récupère les données de toutes les pages. Pour ce faire, il suffit généralement de suivre des liens ou d'utiliser un contrôle de pagination, tel qu'un bouton "suivant", pour naviguer jusqu'à la page de données suivante.
- 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 test web qui peut simuler l'interaction d'un utilisateur avec une page web et vous permettre de récupérer des données générées dynamiquement. Une bonne alternative est d'utiliser notre scraper qui peut renvoyer les données après 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 avec élégance dans votre scraper, car les problèmes de réseau ou de serveur peuvent entraîner l'échec des requêtes ou le caractère incomplet des données. Vous pouvez utiliser des blocs try/except pour attraper les exceptions et les traiter de manière appropriée, par exemple en réessayant la requête ou en enregistrant l'erreur.
- Mise à l'échelle du scraper : Si vous devez extraire une grande quantité de données de plusieurs tables ou sites web, vous devrez peut-être faire évoluer votre scraper pour gérer la charge de travail accrue. Pour ce faire, vous pouvez utiliser des 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 plus efficiente, et vous assurer que votre scraper est fiable et évolutif. Dans la section suivante, nous verrons pourquoi l'utilisation d'un service de scraper professionnel peut être une meilleure option que la création de votre propre scraper.
Résumé
Dans cet article, nous avons abordé les bases du web scraping et vous avons montré comment construire un simple scraper Python pour extraire des données d'un tableau HTML. Bien que la construction de votre propre scraper puisse être un exercice utile et éducatif, il y a un certain nombre de raisons pour lesquelles l'utilisation d'un service de scraper professionnel peut être 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 scraping web à grande échelle.
- Les scrapers professionnels disposent souvent de fonctions et de capacités qui ne sont pas disponibles dans les scrapers maison, comme la prise en charge des CAPTCHA, la limitation des taux et la gestion d'AJAX et de JavaScript.
- L'utilisation d'un racleur professionnel peut vous faire gagner du temps et des ressources, car vous n'avez pas besoin de construire et d'entretenir votre propre racleur.
- Les scrapeurs professionnels proposent souvent différentes options tarifaires et peuvent être plus rentables que la création de votre propre scrapeur, en particulier si vous avez besoin de récupérer de grandes quantités de données.
Bien que la construction de votre propre grattoir puisse être une expérience enrichissante, dans de nombreux cas, il peut être plus pratique et plus rentable de faire appel à un service de grattage professionnel. En fin de compte, la décision de construire son propre racleur ou de faire appel à un service professionnel dépendra de vos besoins spécifiques et de vos ressources.
J'espère que cet article vous a donné un aperçu utile du web scraping et du processus de construction d'un simple table scraper HTML avec Python.
Nouvelles et mises à jour
Restez au courant des derniers guides et nouvelles sur le web scraping en vous inscrivant à notre lettre d'information.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Articles connexes

Explorez les complexités du scraping des données de produits Amazon avec notre guide approfondi. Des meilleures pratiques aux outils tels que l'API Amazon Scraper, en passant par les considérations juridiques, apprenez à relever les défis, à contourner les CAPTCHA et à extraire efficacement des informations précieuses.


Découvrez 3 façons de télécharger des fichiers avec Puppeteer et construisez un scraper web qui fait exactement cela.


Apprenez à récupérer des tables JavaScript en utilisant Python. Extraire des données de sites web, les stocker et les manipuler en utilisant Pandas. Améliorer l'efficacité et la fiabilité du processus de scraping.
