Yahoo Finance est l'une des plateformes les plus populaires pour suivre les cours des actions, l'actualité financière et les données des entreprises. Avec plus de 335 millions d'utilisateurs mensuels, c'est une source précieuse d'informations structurées et fiables. données financières en temps réel.

Dans ce guide, vous apprendrez à extraire des données de Yahoo Finance à l'aide de Python, ainsi que les meilleures pratiques pour éviter les mesures anti-bot.

TL; DR:

  • Apprenez à scraper Yahoo Finance en utilisant Python et Crawlbase Crawling API.
  • Couvre le cours des actions, les variations de prix et l'extraction des horodatages du marché.
  • Inclut un exemple de code complet et Crawlbase conseils d'intégration.

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

Table des Matières

1. Outils dont vous avez besoin (Python + Crawlbase)

2. Étape par étape : comment récupérer des données sur une page Yahoo Finance

3. Extraire le titre de la page avec BeautifulSoup

4. Récupération des cours des actions de Yahoo Finance

5. Grattage des indicateurs de variation de prix (haut/bas)

6. Obtenir l'horodatage du marché

7. Code Python complet : Yahoo Finance Scraper

8. Réflexions finales et prochaines étapes

9. Foire aux questions (FAQ)

1. Outils dont vous avez besoin pour scraper Yahoo Finance (Python + Crawlbase)

Une fois Python Une fois installé et que vous avez choisi votre IDE préféré, il est temps d'installer les outils nécessaires pour récupérer les données de Yahoo Finance. Les commandes suivantes installeront Crawlbase Bibliothèque Python et Beautifulsoup4

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

2. Étape par étape : comment récupérer des données sur une page 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.

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
à partir 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 = 'Crawlbase_Jeton'

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

crawl(page_url, api_token)

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

3. Extraire le titre de la page avec BeautifulSoup

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 Objet 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(à un besoin identifié):
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 la fonction 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.

4. Récupération des cours des actions de Yahoo Finance

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 par personneCommencez 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(à un besoin identifié):
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.

5. Grattage des indicateurs de variation de prix (haut/bas)

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(à un besoin identifié):
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 {}

6. Obtenir l'horodatage du marché

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(à un besoin identifié):
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 {}

7. Code Python complet : 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
à partir de base d'exploration importer API d'exploration
à partir 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(à un besoin identifié):
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 = 'Crawlbase_Jeton'

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

8. Réflexions finales et prochaines étapes

Vous avez terminé un guide complet sur la façon de créer efficacement un scraper pour Yahoo Finance à l'aide de Python, Crawlbase API et BeautifulSoup. Vous avez appris à extraire des données propres et utiles de pages web et à les personnaliser pour vos projets ou 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 recommandons l'intégration avec Crawlbase Crawling API, qui gère la rotation IP, les CAPTCHA et le rendu.

9. Foire aux questions (FAQ)

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 ?

Plusieurs outils et bibliothèques sont disponibles pour le scraping web en Python, notamment BeautifulSoup, Scrapy et Selenium. Vous pouvez également utiliser des API telles que Crawlbase API pour un accès simplifié aux données web. Choisissez l'outil ou la bibliothèque qui correspond le mieux aux exigences de votre projet et à votre expertise technique.