Découvrez comment récupérer des tableaux JavaScript avec Python
Andrei Ogiolan le 24 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. Il peut être utilisé pour collecter des données à des fins de veille stratégique, pour suivre les modifications apportées aux sites web ou pour créer vos propres applications web. Dans cet article, nous allons nous concentrer sur la manière de récupérer des tables JavaScript à l'aide de Python.
Qu'est-ce qu'un tableau JavaScript ?
Les tableaux JavaScript sont un moyen courant d'afficher des données tabulaires sur le web, et on les trouve sur un grand nombre de sites web. L'extraction de ces tableaux peut s'avérer difficile car les données sont souvent intégrées dans le code source de la page sous la forme d'un objet JavaScript, plutôt que dans un tableau HTML standard. Cependant, avec les bons outils et les bonnes techniques, il est possible d'extraire ces données à l'aide de Python.
Nous commencerons par configurer les outils nécessaires et par installer les bibliothèques requises. Ensuite, nous utiliserons Python et un pilote web pour charger la page web et extraire les données du tableau. Enfin, nous discuterons des moyens d'améliorer l'efficacité et la fiabilité du processus de scraping, et des raisons pour lesquelles il est préférable de faire appel à un scraper professionnel pour les tâches plus complexes.
Mise en place
Avant de commencer à scraper des tables JavaScript avec Python, il y a deux conditions préalables à respecter :
- Python : Ce tutoriel suppose que Python est installé sur votre machine. Si ce n'est pas le cas, vous pouvez le télécharger sur le site officiel et suivre les instructions correspondant à votre système d'exploitation.
- Un pilote web : Afin de charger et d'interagir avec des pages web à l'aide de Python, nous devons utiliser un pilote web. Plusieurs options sont disponibles, telles que ChromeDriver, FirefoxDriver et SafariDriver. Pour ce tutoriel, nous utiliserons ChromeDriver.
Une fois que Python et un pilote web sont installés, vous devez installer les bibliothèques suivantes :
- Selenium: Selenium est une bibliothèque qui permet de contrôler un navigateur web via Python. Nous l'utiliserons pour charger et interagir avec la page web contenant le tableau. Lorsqu'il s'agit de tableaux JavaScript, il est important d'utiliser une bibliothèque comme Selenium au lieu de requêtes Python, car vous pouvez attendre qu'un élément généré par JavaScript apparaisse sur la page au cas où il ne serait pas présent lors du chargement de la page web.
- Pandas: Pandas est une bibliothèque qui fournit des structures de données et des outils d'analyse de données faciles à utiliser pour Python. Nous l'utiliserons pour stocker et manipuler les données extraites du tableau.
Pour installer ces bibliothèques, ouvrez un terminal ou une invite de commande et utilisez la commande pip pour les installer :
pip install selenium pandas
Voilà, c'est fait ! Vous êtes maintenant prêt à commencer à scraper des tables JavaScript avec Python. Dans la section suivante, nous allons suivre le processus étape par étape.
Commençons à gratter
Maintenant que nous avons installé tous les outils nécessaires, il est temps de commencer à récupérer des tableaux JavaScript avec Python. Le processus comprend les étapes suivantes
- Chargez la page web contenant le tableau à l'aide de Selenium et d'un pilote web.
- Extraire les données du tableau en utilisant Selenium et Python.
- Stocker et manipuler les données à l'aide de Pandas.
Examinons chacune de ces étapes plus en détail :
Étape 1 : Chargement de la page web
La première chose à faire est de charger la page web contenant la table que nous voulons récupérer. Nous pouvons le faire en utilisant Selenium et un pilote web.
Tout d'abord, importons les bibliothèques nécessaires :
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
Ensuite, nous allons créer une instance du pilote web et l'utiliser pour charger la page web :
# Remplacez "path/to/chromedriver" par le chemin de votre exécutable ChromeDriver
driver = webdriver.Chrome(service=Service('path/to/chromedriver'))
# Chargez la page web
driver.get('https://html.com/tags/table/')
Il est important de noter que la page web doit être entièrement chargée avant d'extraire les données de la table. Vous devrez peut-être utiliser la fonction driver.implicitly_wait() pour attendre le chargement de la page, ou utiliser la fonction driver.find_element(By.*, '') pour attendre le chargement d'un élément spécifique de la page.
Étape 2 : Extraire les données
Une fois la page web chargée, nous pouvons utiliser Selenium pour extraire les données du tableau. Il existe plusieurs façons de procéder, mais l'une d'entre elles consiste à utiliser la fonction driver.find_elements(By.CSS_SELECTOR, 'td') pour localiser les cellules du tableau et extraire le texte de chacune d'entre elles.
Voici un exemple d'extraction des données d'un simple tableau à deux colonnes :
# Trouver toutes les lignes du tableau
rows = driver.find_elements(By.CSS_SELECTOR, 'table tr')
# Pour chaque ligne, trouver les cellules et extraire le texte
for row in rows :
try :
cells = row.find_elements(By.CSS_SELECTOR, 'td') or row.find_elements(By.CSS_SELECTOR, 'th')
except :
continue
for cel in cells :
print(cel.text, end= " ")
print()
driver.quit()
N'oubliez pas que vous devrez peut-être utiliser un sélecteur CSS différent en fonction de la structure du tableau et des éléments qu'il contient. Vous pouvez utiliser les outils de développement de votre navigateur web pour inspecter la page et trouver le sélecteur approprié.
Étape 3 : Stocker et manipuler les données
Une fois que vous avez extrait les données du tableau, vous pouvez les stocker dans un cadre de données Pandas et les manipuler selon vos besoins. Voici un exemple de la manière de procéder :
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
import pandas as pd
df = pd.DataFrame()
driver = webdriver.Chrome(service=Service('/path/to/chromedriver'))
# Utiliser le webdriver pour charger une page web
driver.get('https://html.com/tags/table/')
# Lors du scraping de contenu généré par JavaScript, il est important d'attendre quelques secondes
time.sleep(4)
table = driver.find_element(By.CSS_SELECTOR, 'table')
# Pour chaque ligne, trouver les cellules et extraire le texte
df = pd.read_html(table.get_attribute('outerHTML'))
print(df)
driver.close()
Plongée en profondeur
Bien que les étapes décrites ci-dessus vous permettent de récupérer des tables JavaScript à l'aide de Python, il existe quelques moyens d'améliorer l'efficacité et la fiabilité du processus.
Un moyen d'améliorer l'efficacité est d'utiliser un navigateur sans tête, c'est-à-dire un navigateur qui s'exécute en arrière-plan sans interface graphique. Cette méthode peut être plus rapide que l'utilisation d'un navigateur complet, et elle est moins gourmande en ressources. Pour utiliser un navigateur sans tête avec Selenium, vous pouvez utiliser l'option --headless lors de la création de l'instance du pilote web.
Un autre moyen d'améliorer l'efficacité est d'utiliser un service qui fournit des adresses IP tournantes, tel qu'un serveur proxy. Cela peut vous aider à éviter d'être détecté comme un scrapeur et d'être bloqué par le site web, car l'adresse IP de la demande semblera changer à chaque demande. WebScrapingAPI est un service qui offre la possibilité de gratter un site web à l'aide d'un serveur proxy. Pour en savoir plus sur l'utilisation des proxys pour le web scraping, n'hésitez pas à consulter notre documentation.
Pour utiliser un serveur proxy avec Selenium, je vous recommande fortement d'utiliser selenium-wire car il est plus direct que Selenium simple lorsqu'il s'agit de se connecter à un serveur proxy. Comme tout autre paquetage Python, vous pouvez simplement l'installer en exécutant la commande suivante :
pip install selenium-wire
Vous pouvez alors utiliser l'exemple de codage suivant afin d'utiliser un serveur proxy avec Selenium :
from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
import time
# Create a webdriver instance with the desired proxy server and authentication details
API_KEY = '<YOUR-API-KEY-HERE>'
options = {
'proxy': {
'http': f'http://webscrapingapi:{API_KEY}@proxy.webscrapingapi.com:80',
'https': f'https://webscrapingapi:{API_KEY}@proxy.webscrapingapi.com:80',
'no_proxy': 'localhost,127.0.0.1'
}
}
driver = webdriver.Chrome(service=Service('/path/to/chromedriver'), seleniumwire_options=options)
# Use the webdriver to load a webpage
driver.get('http://httpbin.org/ip')
# When scraping JavaScript generated content it is important to wait a few seconds
time.sleep(5)
# Do something with the page, such as extract data or take a screenshot
# ...
# Close the webdriver
driver.quit()
Bien que ces techniques puissent être utiles pour améliorer l'efficacité et la fiabilité de votre scrapping web, il est important de noter qu'elles dépassent le cadre de cet article. Pour les tâches de scraping plus complexes, il peut être plus efficace et plus fiable d'utiliser un scraper professionnel, tel que WebScrapingAPI. Cet outil offre des fonctionnalités supplémentaires, telles que la rotation des adresses IP et le contournement des CAPTCHA, qui peuvent rendre le processus de scraping beaucoup plus facile et plus fiable.
Dans la section suivante, nous résumerons les étapes du scraping de tables JavaScript avec Python et discuterons des avantages de l'utilisation d'un scraper professionnel pour les tâches plus complexes.
Résumé
En conclusion, le scraping de tableaux JavaScript avec Python est un moyen puissant d'extraire des données de sites web et de les utiliser à des fins diverses. Que vous utilisiez votre propre code ou un scraper professionnel, cette technique peut être un outil précieux pour collecter des données et obtenir des informations.
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.


Apprenez quel est le meilleur navigateur pour contourner les systèmes de détection de Cloudflare lorsque vous faites du web scraping avec Selenium.


Apprenez à scraper des tableaux HTML avec Golang pour une extraction de données puissante. Explorez la structure des tableaux HTML et construisez un scraper web en utilisant la simplicité, la concurrence et la bibliothèque standard robuste de Golang.
