Tutoriel sur l'API Yahoo Finance : Comment scraper des données financières avec Python

Si votre projet implique des données financières telles que des actualités, des rapports, des cours boursiers ou tout ce qui concerne la gestion financière, Yahoo Finance reste un choix de premier ordre pour l'extraction de données. Avec plus de 335 millions de visiteurs en mars 2024, il est clairement leader par rapport à d'autres acteurs établis du marché comme USA Today (203 millions), Business Insider (154 millions) et Bloomberg (67 millions).

Yahoo Finance Logo

Prêt à automatiser votre collecte de données depuis Yahoo Finance ? Cet article vous guidera pas à pas. Nous vous montrerons précisément comment utiliser l'outil Crawlbase API avec Python pour créer un scraper puissant et efficace. Suivez-nous et découvrez à quel point c'est simple.

Essayez notre Crawling API et obtenez 1,000 demandes gratuites maintenant.

Table des Matières

  1. Portée du projet
  2. Conditions préalables à l'extraction de données financières
  3. Installation des dépendances
  4. Récupération de la page Web Yahoo Finance
  5. Récupération du titre à partir du code HTML de Yahoo Finance à l'aide de bs4
  6. Comment faire baisser les prix financiers
  7. Annulation du changement de prix
  8. Récupération du statut Market Time sur Yahoo Finance
  9. Complétez le Yahoo Finance Scraper

1. Portée du projet

La portée de ce projet comprend le développement d'un outil de scraping Web utilisant le langage de programmation Python, Crawlbase's Crawling API, et la bibliothèque BeautifulSoup. Notre objectif principal est d'extraire des données spécifiques à partir de pages Web hébergées sur le Yahoo Finance site Web et présentation des informations dans un format clair, en se concentrant sur les informations boursières telles que les noms des sociétés, les cours des actions, les changements et les dates de clôture.

2. Conditions préalables à l'extraction de données financières de Yahoo

En tant que bonne pratique pour les développeurs, nous devrions toujours commencer par discuter des exigences du projet. Nous devons connaître les éléments essentiels avant de passer à la phase de codage proprement dite. Voici donc les bases importantes de ce projet :

Lire aussi: Investir dans le DAX : Guide complet

  • Connaissances de base de Python: Étant donné que nous utiliserons Python et Beautifulsoup, il est naturel que vous ayez une compréhension de base du langage de programmation Python. Si c'est votre première fois, nous vous encourageons à vous inscrire à des cours de base ou au moins à regarder des didacticiels vidéo et à faire quelques exercices de codage de base avant de tenter de créer votre propre scraper.
  • Python installé: Si Python n'est pas déjà installé sur votre système, rendez-vous sur le site officiel Site Web Python et téléchargez la dernière version. Suivez les instructions d'installation fournies pour configurer Python sur votre machine.
  • À propos des IDE: Plusieurs environnements de développement intégrés (IDE) pour Python sont disponibles pour ce projet, chacun possédant ses propres fonctionnalités et avantages. Vous avez la possibilité d'utiliser n'importe lequel de ces IDE pour interagir avec le projet. Crawling API ou tout autre service Web utilisant des requêtes HTTP. Choisissez celui avec lequel vous êtes le plus à l'aise et qui correspond le mieux à votre flux de travail et aux exigences de votre projet.
  • Crawlbase Compte API: La Crawling API A partir de Crawlbase sera au cœur de ce projet. Il est important que vous ayez un compte et que vous obteniez vos jetons avant de commencer ce guide, afin de faciliter le processus une fois la phase de codage commencée. Créez simplement un compte et accédez à la documentation de votre compte pour obtenir vos jetons. Pour ce projet, nous utiliserons le Jeton de demande JavaScript pour explorer les pages financières de Yahoo.

3. Installation des dépendances

Une fois Python installé et que vous avez déterminé quel IDE vous préférez, il est temps d'installer les packages nécessaires à notre projet. En programmation, un package est un ensemble de modules ou de classes connexes qui sont organisés ensemble pour fournir un ensemble de fonctionnalités. Les packages aident à organiser le code en espaces de noms hiérarchiques, ce qui facilite la gestion et la réutilisation du code dans différents projets.

Pour installer un package, ouvrez simplement votre invite de commande (Windows) ou votre terminal (macOS/Linux), créez un répertoire dans lequel vous souhaitez stocker votre code Python et utilisez la commande pip pour installer les packages comme indiqué ci-dessous :

pip installe crawlbase
pip installer beautifulsoup4

Les commandes ci-dessus installeront les éléments suivants :

  • Crawlbase Bibliothèque Python : Une classe Python légère et sans dépendance qui agit comme wrapper pour Crawlbase API. Il s'agit essentiellement d'un package permettant d'intégrer facilement diverses Crawlbase API incluant le Crawling API dans votre projet.
  • Beautifulsoup4: Une bibliothèque Python utilisée à des fins de scraping Web. Elle vous permet d'extraire des données à partir de fichiers HTML et XML, ce qui facilite l'analyse et la navigation dans la structure du document. Beautiful Soup fournit une interface simple pour travailler avec des documents HTML et XML en transformant le balisage brut en un arbre d'analyse navigable.

De plus, nous utiliserons le module JSON pour exporter les données dans un fichier JSON, il s'agit d'un package intégré de Python, qui peut être utilisé pour travailler avec des données JSON.

4. Récupération de la page Web Yahoo Finance

Il est maintenant temps d'écrire notre code. Nous allons d'abord écrire un code pour explorer l'intégralité du code source HTML de notre page web cible. Dans cette étape, nous utiliserons le Crawlbase paquet.

Lire aussi: Taux de Change : Comprendre l'USD/EUR

Commencez par ouvrir votre éditeur de texte ou IDE préféré et créez un nouveau fichier Python. Cette classe permet l'interaction avec Crawlbase API à des fins d'exploration Web.

La crawl fonction prend deux paramètres : page_url (l'URL de la page à explorer) et api_token (le jeton API utilisé pour authentifier les requêtes adressées au Crawlbase API).

Le code est ensuite enveloppé dans un try bloc pour gérer les erreurs potentielles. Si des erreurs se produisent pendant l'exécution, elles sont détectées et traitées dans le except bloque.

Un exemple du CrawlingAPI la classe est créée avec le jeton API fourni et la méthode get est utilisée pour effectuer une requête GET vers le spécifié page_url. La réponse de l'API est stockée dans le response variable.

Le script vérifie également si le code d'état HTTP de la réponse est 200, ce qui indique que la requête a réussi. Si la requête a réussi, le corps de la réponse (code source HTML) est affiché sur la console. Si la requête échoue ou si des exceptions se produisent pendant l'exécution, des messages d'erreur sont affichés sur la console.

Lire aussi: Yahoo Finance et les marchés financiers

Essayons d'exécuter le code. Vous pouvez à nouveau accéder à votre console et saisir la commande ci-dessous :

scraper python.py

En cas de succès, vous recevrez une réponse similaire à celle-ci :

5. Récupération du titre à partir du code HTML de Yahoo Finance à l'aide de bs4

Pour cette section, nous allons maintenant nous concentrer sur l'extraction du contenu du code source HTML que nous avons obtenu en explorant la page Web financière de Yahoo. Nous devons commencer par appeler la bibliothèque Beautiful Soup pour analyser le code HTML et le présenter au format JSON.

from crawlbase import CrawlingAPI
from bs4 import BeautifulSoup

Ensuite, nous devrons rechercher les données que nous souhaitons extraire. Recherchez le nom de l'entreprise ou le Titre Premièrement. Vous devrez inspecter la structure de la page Web à l'aide des outils de développement du navigateur ou en affichant la source de la page en mettant en surbrillance le titre, en cliquant avec le bouton droit de la souris et en sélectionnant l'option « Inspecter ».

Une fois que vous avez la ligne pour l'élément de titre, utilisez simplement le sélecteur BeautifulSoup pour extraire les données. Voici comment vous pouvez écrire le code :

def gratter_les_données(RAPIDE):
try:
soupe = BeautifulSoup(réponse['corps'], 'html.parser')
titre = soup.select_one('div.hdr h1').texte.strip()
if soupe.select_one('div.hdr h1')
d'autre Aucun
retourner {'Titre': titre}
sauf Exception as e:
impression(f"Une erreur s'est produite lors du scraping : {e}")
retourner {}

Le code commence par essayer d'analyser le contenu HTML de la page Web. Il utilise le constructeur BeautifulSoup, en passant le contenu HTML (response['body']) et le type d'analyseur ('html.parser').

À l'intérieur de l' try bloc, la fonction tente d'extraire des données spécifiques du code HTML analysé. Elle essaie de trouver un <h1> élément avec un nom de classe 'svelte-ufs8hf' en utilisant l' select_one méthode fournie par Beautiful Soup.

Une fois l'élément trouvé, il récupère le contenu textuel de l' <h1> élément et l'affecte à la variable title. Si le <h1> l'élément n'est pas trouvé, title est fixé à None.

En cas d'erreur, il imprime un message d'erreur sur la console et renvoie un dictionnaire vide en guise de solution de secours.

6. Comment faire baisser les prix financiers

Les prochaines données pertinentes que nous souhaitons extraire pour la page Web financière de Yahoo sont le prix de négociation le plus récent d'un actif financier ou simplement le Prix

Commencez par mettre en surbrillance le prix et inspectez-le comme indiqué dans l'image ci-dessous :

Inspect Price

Écrivez le code pour extraire l’élément Price :

def gratter_les_données(RAPIDE):
try:
soupe = BeautifulSoup(réponse['corps'], 'html.parser')
prix = soup.select_one('.livePrice[data-testid="qsp-price"]').texte.strip()
if soupe.select_one('.livePrice[data-testid="qsp-price"]')
d'autre Aucun
retourner {'prix': prix}
sauf Exception as e:
impression(f"Une erreur s'est produite lors du scraping : {e}")
retourner {}

Comme le code ci-dessus, cela nous permettra d'extraire l'élément spécifique du code source HTML complet et de supprimer toutes les données non pertinentes pour notre projet.

7. Annulation du changement de prix

Notre prochaine donnée cible serait la variation de prix. Cette valeur représente la variation du prix d'un actif financier, comme une action, par rapport à sa clôture précédente.

Encore une fois, mettez simplement en surbrillance le prix de modification et obtenez le sélecteur approprié pour l'élément.

def gratter_les_données(RAPIDE):
try:
soupe = BeautifulSoup(réponse['corps'], 'html.parser')
changement = soup.select_one('.priceChange[data-testid="qsp-price-change"]').texte.strip()
if soupe.select_one('.priceChange[data-testid="qsp-price-change"]')
d'autre Aucun
retourner {'changement': changement}
sauf Exception as e:
impression(f"Une erreur s'est produite lors du scraping : {e}")
retourner {}

8. Scraping Market Timestamp sur Yahoo Finance

Enfin, nous allons également récupérer l'horodatage du marché. Il fait référence à la date précise à laquelle les prix sont calculés. Par exemple, si vous voyez « À la clôture » suivi de la date « 19 avril 2024 », cela signifie que les informations fournies concernent le cours de clôture de l'actif le 19 avril 2024.

Notez également que si le message « Marché ouvert » s'affiche, cela indique que le prix affiché est le prix auquel l'actif a commencé à être négocié à l'ouverture du marché.

Mettez en surbrillance les données et accédez à inspect pour obtenir le sélecteur associé. Écrivons à nouveau le code pour extraire les données à l'aide de BeautifulSoup.

def gratter_les_données(RAPIDE):
try:
soupe = BeautifulSoup(réponse['corps'], 'html.parser')
horodatage_du_marché = next((s.texte.strip() pour s in soupe.select('div[slot="marketTimeNotice"] span') if « À la fermeture : » in s.text or « Marché ouvert » in s.texte), Aucun)
retourner {'horodatage_du_marché': horodatage_du_marché}
sauf Exception as e:
impression(f"Une erreur s'est produite lors du scraping : {e}")
retourner {}

9. Complétez le Yahoo Finance Scraper

Après avoir écrit le sélecteur pour chacune de nos données cibles, il est temps de compiler le code et de mettre notre scraper en action. Pour votre commodité, nous avons compilé le code ci-dessous et ajouté quelques lignes pour enregistrer la réponse sous forme de fichier JSON.

Exemple de données extraites au format JSON :

{
"données": [
{
« Titre »: « Apple Inc. (AAPL) »,
"prix": "168.99",
"changement": "-3.70",
"date_de_clôture": « À 12 h 09 HAE. Ouverture du marché. »
},
{
« Titre »: « Tesla, Inc. (TSLA) »,
"prix": "156.90",
"changement": "-4.58",
"date_de_clôture": « À 12 h 09 HAE. Ouverture du marché. »
},
{
« Titre »: « Bitcoin USD (BTC-USD) »,
"prix": "61,966.21",
"changement": "-2,804.80",
"date_de_clôture": « À 4h08 UTC. Marché ouvert. »
}
]
}

Et voilà. La réponse au format JSON vous permettra d'utiliser efficacement les données. Utilisez-les pour analyser le marché boursier, comparer les prix, etc. Le choix vous appartient.

balises: #Financ

Articles populaires: