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).

Statistiques de Yahoo Finance

source

Vous êtes prêt à automatiser votre collecte de données à partir de Yahoo Finance ? Cet article vous guidera tout au long du processus, étape par étape. Nous vous montrerons exactement comment utiliser l'API Crawlbase avec Python pour créer un scraper puissant et efficace. Suivez-nous et découvrez à quel point cela peut être simple.

Voici une courte vidéo expliquant comment extraire des données financières de Yahoo Finance:

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

10. Conclusion

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. 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.

Objectifs de l'extraction de données financières de Yahoo

Développement d'outils de Web Scraping : Mettre en place un Python Outil de scraping Web capable d'extraire des données de pages Web ciblées sur Yahoo Finance et de présenter les données extraites dans un format lisible. Notre site cible s'appuie sur AJAX pour charger et mettre à jour les données de manière dynamique, nous aurons donc besoin d'un outil capable de traiter JavaScript.

Intégration de l'API Crawlbase : Intégrer le Crawling API dans l'outil de scraping pour avoir une récupération plus efficace du contenu HTML des pages Web cibles. Crawling API sera utilisé pour charger et traiter du contenu dynamique en utilisant ses capacités de rendu JavaScript et en même temps éviter tout blocage IP potentiel et CAPTCHA.

Analyse des données : Utiliser BeautifulSoup bibliothèque pour analyser le contenu HTML, supprimer les informations indésirables et extraire des données propres et pertinentes avec des sélecteurs précis.

Exportation de données : Exportez les données extraites dans un format structuré, notamment JSON, pour une analyse et une utilisation ultérieures.

Ce guide vous fournira les connaissances nécessaires pour créer un scraper Web pour les données boursières de Yahoo Finance. Avec ce projet, vous pouvez débloquer des informations précieuses que vous pouvez utiliser à diverses fins, telles que des études de marché, des analyses, etc.

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

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 :

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

Il existe plusieurs environnements de développement intégrés (IDE) disponibles pour Python que vous pouvez utiliser pour ce projet, chacun avec ses propres fonctionnalités et avantages. Voici quelques options populaires :

PyCharme : Développé par JetBrains, PyCharm est un IDE puissant et riche en fonctionnalités avec des fonctions intelligentes de saisie semi-automatique du code, d'analyse du code et de débogage. Il est disponible en deux éditions : Community (gratuite) et Professional (payante).

Code Visual Studio (code VS) : Développé par Microsoft, Code VS est un IDE léger mais puissant avec un support étendu pour le développement Python via des extensions. Il offre des fonctionnalités telles qu'IntelliSense, le débogage et l'intégration Git intégrée.

Laboratoire Jupyter : laboratoire jupyter est un environnement de développement interactif qui vous permet de créer et de partager des documents contenant du code en direct, des équations, des visualisations et du texte narratif. Il est particulièrement adapté aux projets axés sur la science des données et la recherche.

Texte sublime: Sublime Text est un éditeur de texte léger et rapide, connu pour sa rapidité et sa simplicité. Il offre une large gamme de plugins et d'options de personnalisation, ce qui le rend adapté au développement Python lorsqu'il est associé aux bons plugins.

Vous avez la possibilité d'utiliser n'importe lequel de ces IDE pour interagir avec le 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.

Compte API Crawlbase

La série Crawling API de Crawlbase sera au centre de ce projet. Il est important que vous ayez un compte et que vous obteniez vos jetons de compte avant de commencer ce guide pour un flux plus fluide une fois engagé dans la phase de codage.

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.

Compte Crawlbase

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 :

1
2
pip installe crawlbase
pip installer beautifulsoup4

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

Bibliothèque Python Crawlbase : Une classe Python légère et sans dépendance qui agit comme wrapper pour l'API Crawlbase. Il s'agit essentiellement d'un package qui vous permet d'intégrer facilement diverses API Crawlbase, notamment 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 le code source HTML complet de notre page Web cible. Dans cette étape, nous utiliserons le package Crawlbase.

Commencez par ouvrir votre éditeur de texte ou IDE préféré et créez un nouveau fichier Python. Pour les besoins de ce guide, créons un fichier nommé scraper.py depuis votre terminal/console :

1
gratte-toucher.py

Pour la démonstration, nous allons cibler ceci Page financière Yahoo.

Page Web de Yahoo Finance

Copiez le code complet ci-dessous et lisez l'explication pour comprendre chaque section :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
de base d'exploration importer API d'exploration

def ramper(URL de la page, jeton d'API):
Essai:
# Initialiser l'objet CrawlingAPI avec le jeton fourni
api = API d'exploration({'jeton': api_token})

# Obtenir le contenu de la page
réponse = api.get(page_url)

# Vérifiez si la demande a réussi
if réponse['code_d'état']== 200:
# Extraire les données
impression(réponse["corps"])
d'autre:
impression(f"Erreur : {réponse}")


sauf Exception as e:
impression(f"Une erreur s'est produite lors de l'exploration : {e}")
retourner {}

if __nom__ == "__principale__":
# Utilisez le jeton de requête Javascript de Crawlbase
jeton_api = Jeton « Crawlbase »

page_url = 'https://finance.yahoo.com/quote/AAPL'

crawl(page_url, api_token)

Comment fonctionne le scraping de Yahoo Finance :

nous avons importé le CrawlingAPI classe du module crawlbase. Cette classe permet l'interaction avec l'API Crawlbase à des fins d'exploration Web.

La série crawl la 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 auprès de l'API Crawlbase).

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.

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

1
scraper python.py

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

Yahoo Finance HTML

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.

1
2
à partir de crawlbase, importer CrawlingAPI
de 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 ».

Titre de Yahoo Finance

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 :

1
2
3
4
5
6
7
8
9
10
11
12
13
def gratter_les_données(RAPIDE):
Essai:
# Analyser le contenu HTML à l'aide de Beautiful Soup
soupe = BeautifulSoup(réponse['corps'], 'html.parser')

# Extraire les données requises
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 PrixCommencez par mettre en surbrillance le prix et inspectez-le comme indiqué dans l'image ci-dessous :

Prix ​​​​de Yahoo Finance

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

1
2
3
4
5
6
7
8
9
10
11
12
13
def gratter_les_données(RAPIDE):
Essai:
# Analyser le contenu HTML à l'aide de Beautiful Soup
soupe = BeautifulSoup(réponse['corps'], 'html.parser')

# Extraire les données requises
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.

Yahoo Finance a changé de prix

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

1
2
3
4
5
6
7
8
9
10
11
12
13
def gratter_les_données(RAPIDE):
Essai:
# Analyser le contenu HTML à l'aide de Beautiful Soup
soupe = BeautifulSoup(réponse['corps'], 'html.parser')

# Extraire les données requises
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é.

Date de clôture de Yahoo Finance

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
def gratter_les_données(RAPIDE):
Essai:
# Analyser le contenu HTML à l'aide de Beautiful Soup
soupe = BeautifulSoup(réponse['corps'], 'html.parser')

# Extraire les données requises
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. N'hésitez pas à le copier et à l'enregistrer sur votre machine locale :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
de base d'exploration importer API d'exploration
de bs4 importer BeautifulSoup
importer json

def ramper(URL de la page, jeton d'API):
Essai:
# Initialiser l'objet CrawlingAPI avec le jeton fourni
api = API d'exploration({'jeton': api_token})

# Obtenir le contenu de la page
réponse = api.get(page_url)

# Vérifiez si la demande a réussi
if réponse['code_d'état'] != 200:
impression(f"Erreur : {réponse}")
retourner {}

# Données récupérées
scraped_data = scrape_data(réponse)
impression(f'{données récupérées}')
retourner données récupérées

sauf Exception as e:
impression(f"Une erreur s'est produite lors de l'exploration : {e}")
retourner {}

def gratter_les_données(RAPIDE):
Essai:
# Analyser le contenu HTML à l'aide de Beautiful Soup
soupe = BeautifulSoup(réponse['corps'], 'html.parser')

# Extraire les données requises
titre = soup.select_one('div.hdr h1').texte.strip() if soupe.select_one('div.hdr h1') d'autre Aucun
prix = soup.select_one('.livePrice[data-testid="qsp-price"]').texte.strip() if soupe.select_one('.livePrice[data-testid="qsp-price"]') d'autre Aucun
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
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 {'Titre': titre, 'prix': prix, 'changement': changement, 'horodatage_du_marché': horodatage_du_marché}

sauf Exception as e:
impression(f"Une erreur s'est produite lors du scraping : {e}")
retourner {}

if __nom__ == "__principale__":
# Utilisez le jeton de requête Javascript de Crawlbase
jeton_api = Jeton « Crawlbase »

# Liste des stocks à explorer
actions = [« AAPL », « TSLA », « BTC-USD »]
données_stocks = {« actions »: []}

pour stock in actions :
page_url = f'https://finance.yahoo.com/quote/{action}'

# Appelez la fonction crawl et ajoutez les données récupérées au dictionnaire stocks_data
données_stocks[« actions »].append(crawl(page_url, api_token))

# Écrire les données récupérées dans un fichier JSON
avec ouvert('yahoo.json', 'w') as f:
json.dump(données_boursières, f)

Exécutez le code pour obtenir la réponse. Utilisez la commande ci-dessous :

1
scraper python.py

En cas de succès, le résultat devrait être similaire à celui indiqué ci-dessous :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
« actions »: [
{
« 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.

10. Conclusion

Félicitations ! Vous avez terminé un guide complet sur la façon de créer efficacement un scraper pour Yahoo Finance à l'aide de Python, de l'API Crawlbase et de BeautifulSoup. Vous avez appris à extraire des données propres et utiles des pages Web et à les personnaliser pour vos projets ou vos analyses.

Le code partagé dans ce guide est disponible pour toute personne intéressée. Nous vous encourageons à vous y engager activement, car il peut être utile à tout le monde, y compris à toutes sortes de développeurs, de data scientists ou même à un apprenant curieux. Vous êtes libre de modifier et d'adapter le code en fonction de vos besoins spécifiques. Ajustez-le pour l'automatisation, récupérez des données à partir d'autres sites Web, extrayez différents types d'informations ou ajoutez de nouvelles fonctions.

Nous espérons que ce guide a atteint son objectif et vous a fourni les compétences et les outils nécessaires pour utiliser efficacement le scraping Web dans vos projets. Bon scraping et que vos aventures de données vous mènent à de nouvelles découvertes et perspectives !

Si vous recherchez d’autres projets comme celui-ci, nous vous invitons également à consulter les éléments suivants :

Comment récupérer les données d'Apartments.com

Récupérer les données de propriété de Redfin

Playwright Web Scraping 2024 - Tutoriel

Vous souhaitez en savoir plus sur un sujet ? Notre équipe d'assistance se fera un plaisir de vous aider. Envoyez-nous un e-mail.

11. Questions fréquemment posées

Oui, le scraping Web en lui-même n'est pas intrinsèquement illégal, mais il est important de consulter et de respecter les conditions d'utilisation du site Web que vous scrappez. Yahoo Finance, comme de nombreux autres sites Web, peut avoir des conditions générales spécifiques concernant les activités de scraping Web. Assurez-vous de vous familiariser avec ces conditions pour éviter tout problème juridique.

Comment extraire les données de Yahoo Finance ?

  1. Identifier les données à extraire et inspecter le site Web
  2. Sélectionnez un outil ou une bibliothèque de scraping pour extraire les données des pages Web
  3. Utilisez l'outil de scraping choisi pour envoyer une requête HTTP GET à l'URL cible
  4. Analyser le contenu HTML de la page Web à l'aide des capacités d'analyse de l'outil de scraping
  5. Selon vos besoins, vous pouvez stocker les données extraites dans un fichier, une base de données ou une structure de données pour une analyse ultérieure ou les utiliser directement dans votre application.

Quels outils et bibliothèques puis-je utiliser pour récupérer Yahoo Finance ?

Il existe plusieurs outils et bibliothèques disponibles pour le scraping Web en Python, notamment BeautifulSoup, Scrapy et Selenium. De plus, vous pouvez utiliser des API telles que Crawlbase API pour un accès plus facile aux données Web. Choisissez l'outil ou la bibliothèque qui correspond le mieux aux exigences de votre projet et à votre expertise technique.