Yahoo Finance ist eine der beliebtesten Plattformen zur Verfolgung von Aktienkursen, Finanznachrichten und Unternehmensdaten. Mit über 335 Millionen monatlichen Nutzern ist es eine wertvolle Quelle für strukturierte und Finanzdaten in Echtzeit.

In diesem Handbuch erfahren Sie, wie Sie mit Python Daten aus Yahoo Finance extrahieren, und erhalten Best Practices zur Vermeidung von Anti-Bot-Maßnahmen.

TL; DR:

  • Erfahren Sie, wie Sie Yahoo Finance mit Python scrapen und Crawlbase Crawling API.
  • Deckt Aktienkurse, Preisänderungen und die Extraktion von Marktzeitstempeln ab.
  • Enthält vollständigen Beispielcode und Crawlbase Integrationstipps.

Hier ist ein kurzes Video, wie man Finanzdaten von Yahoo Finance scrapt:

Inhaltsverzeichnis

1. Benötigte Tools (Python + Crawlbase)

2. Schritt für Schritt: So scrapen Sie die Yahoo Finance-Webseite

3. Extrahieren des Seitentitels mit BeautifulSoup

4. Aktienkurse von Yahoo Finance abrufen

5. Scraping von Preisänderungsindikatoren (Aufwärts/Abwärts)

6. Den Marktzeitstempel erhalten

7. Vollständiger Python-Code: Yahoo Finance Scraper

8. Abschließende Gedanken und nächste Schritte

9. Häufig gestellte Fragen (FAQs)

1. Tools, die Sie zum Scrapen von Yahoo Finance benötigen (Python + Crawlbase)

Sobald Python installiert ist und Sie herausgefunden haben, welche IDE Sie bevorzugen, ist es Zeit, die Tools zu installieren, die Sie zum Scrapen von Yahoo Finance benötigen. Die folgenden Befehle installieren die Crawlbase Python-Bibliothek und Beautifulsoup4

Um ein Paket zu installieren, öffnen Sie einfach Ihre Eingabeaufforderung (Windows) oder Ihr Terminal (macOS/Linux), erstellen Sie ein Verzeichnis, in dem Sie Ihren Python-Code speichern möchten, und verwenden Sie den Pip-Befehl, um die Pakete wie unten gezeigt zu installieren:

1
2
pip installieren crawlbase
pip install beautifulsoup4

2. Schritt für Schritt: So scrapen Sie die Yahoo Finance-Webseite

Jetzt ist es an der Zeit, unseren Code zu schreiben. Wir schreiben zunächst einen Code, um den gesamten HTML-Quellcode unserer Zielwebseite zu crawlen. In diesem Schritt verwenden wir die Crawlbase Paket.

Öffnen Sie zunächst Ihren bevorzugten Texteditor oder Ihre bevorzugte IDE und erstellen Sie eine neue Python-Datei. Für diesen Leitfaden erstellen wir eine Datei mit dem Namen scraper.py von Ihrem Terminal/Ihrer Konsole:

1
berühren Sie scraper.py

Zur Demonstration werden wir uns auf Folgendes konzentrieren Yahoo-Finanzseite.

Yahoo Finance-Webseite

Kopieren Sie den vollständigen Code unten und lesen Sie die Erklärung, um jeden Abschnitt zu verstehen:

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
von Crawlbase importieren CrawlingAPI

def kriechen(Seiten-URL, API-Token):
versuchen:
# Initialisieren Sie das CrawlingAPI-Objekt mit dem bereitgestellten Token
api = CrawlingAPI({'Zeichen': api_token})

# Holen Sie sich den Seiteninhalt
Antwort = api.get(Seiten-URL)

# Überprüfen Sie, ob die Anfrage erfolgreich war
if Antwort['Statuscode'] == 200:
# Daten extrahieren
drucken(Antwort["Karosserie"])
sonst:
drucken(f"Fehler: {Antwort}")


ausgeschlossen Exception as e:
drucken(f"Beim Crawlen ist ein Fehler aufgetreten: {e}")
Rückkehr {}

if __name__ == "__hauptsächlich__":
# Verwenden Sie das Javascript-Anforderungstoken von Crawlbase
api_token = 'Crawlbase_Token'

Seiten-URL = „https://finance.yahoo.com/quote/AAPL“

crawlen (Seiten-URL, API-Token)

Versuchen wir, den Code auszuführen. Sie können erneut zu Ihrer Konsole gehen und den folgenden Befehl eingeben:

1
Python Scraper.py

Bei Erfolg erhalten Sie eine Antwort ähnlich dieser:

Yahoo Finanzen HTML

3. Extrahieren des Seitentitels mit BeautifulSoup

In diesem Abschnitt konzentrieren wir uns nun darauf, den Inhalt des HTML-Quellcodes zu extrahieren, den wir beim Crawlen der Yahoo-Finanzwebseite erhalten haben. Wir sollten zunächst die Bibliothek Beautiful Soup aufrufen, um das HTML zu analysieren und im JSON-Format darzustellen.

1
2
von Crawlbase importiere CrawlingAPI
von bs4 importieren BeautifulSoup

Als nächstes müssen wir nach den Daten suchen, die wir extrahieren möchten. Suchen Sie nach dem Firmennamen oder dem Titel zuerst. Sie müssen die Struktur der Webseite mithilfe der Entwicklertools des Browsers überprüfen oder die Seitenquelle anzeigen, indem Sie den Titel markieren, mit der rechten Maustaste klicken und die Option „Überprüfen“ auswählen.

Yahoo Finance-Titel

Sobald Sie die Zeile für das Titelelement haben, verwenden Sie einfach den BeautifulSoup-Selektor, um die Daten zu extrahieren. So können Sie den Code schreiben:

1
2
3
4
5
6
7
8
9
10
11
12
13
def Daten scrapen(Antwort):
versuchen:
# Analysieren Sie den HTML-Inhalt mit Beautiful Soup
Suppe = Schöne Suppe(Antwort['Körper'], 'html.parser')

# Erforderliche Daten extrahieren
Titel = Suppe.select_one(„div.hdr h1“).text.strip() if Suppe.Wähle eine(„div.hdr h1“) sonst Keine Präsentation

Rückkehr {‚Titel‘: Titel}

ausgeschlossen Exception as e:
drucken(f"Beim Scraping ist ein Fehler aufgetreten: {e}")
Rückkehr {}

Der Code versucht zunächst, den HTML-Inhalt der Webseite zu analysieren. Er verwendet den BeautifulSoup-Konstruktor und übergibt den HTML-Inhalt (response['body']) und der Parsertyp ('html.parser').

Im Inneren der try -Block versucht die Funktion, bestimmte Daten aus dem analysierten HTML zu extrahieren. Sie versucht, einen <h1> Element mit einem Klassennamen 'svelte-ufs8hf' Verwendung der select_one Methode bereitgestellt von Beautiful Soup.

Sobald das Element gefunden wurde, ruft es den Textinhalt des <h1> Element und weist es der Variablen title zu. Wenn das <h1> Element wurde nicht gefunden, title eingestellt ist None.

Im Fehlerfall wird eine Fehlermeldung auf der Konsole ausgegeben und als Fallback ein leeres Wörterbuch zurückgegeben.

4. Aktienkurse von Yahoo Finance abrufen

Die nächsten relevanten Daten, die wir für die Yahoo-Finanz-Webseite extrahieren möchten, sind der letzte Handelspreis eines Finanzwerts oder einfach der Preis. Markieren Sie zunächst den Preis und prüfen Sie ihn wie im Bild unten gezeigt:

Yahoo Finance-Preis

Schreiben Sie den Code zum Extrahieren des Preiselements:

1
2
3
4
5
6
7
8
9
10
11
12
13
def Daten scrapen(Antwort):
versuchen:
# Analysieren Sie den HTML-Inhalt mit Beautiful Soup
Suppe = Schöne Suppe(Antwort['Körper'], 'html.parser')

# Erforderliche Daten extrahieren
Preis = Suppe.select_one('.livePrice[data-testid="qsp-price"]').text.strip() if Suppe.Wähle eine('.livePrice[data-testid="qsp-price"]') sonst Keine Präsentation

Rückkehr {'Preis': Preis}

ausgeschlossen Exception as e:
drucken(f"Beim Scraping ist ein Fehler aufgetreten: {e}")
Rückkehr {}

Wie beim obigen Code können wir hiermit das spezifische Element aus dem gesamten HTML-Quellcode extrahieren und alle für unser Projekt irrelevanten Daten entfernen.

5. Scraping von Preisänderungsindikatoren (Aufwärts/Abwärts)

Unsere nächsten Zieldaten wären die Preisänderung. Dieser Wert stellt die Preisänderung eines Finanzwerts, beispielsweise einer Aktie, gegenüber dem letzten Schlusskurs dar.

Yahoo Finance hat den Preis geändert

Auch hier müssen Sie nur den Änderungspreis markieren und den entsprechenden Selektor für das Element aufrufen.

1
2
3
4
5
6
7
8
9
10
11
12
13
def Daten scrapen(Antwort):
versuchen:
# Analysieren Sie den HTML-Inhalt mit Beautiful Soup
Suppe = Schöne Suppe(Antwort['Körper'], 'html.parser')

# Erforderliche Daten extrahieren
ändern = Suppe.select_one('.priceChange[data-testid="qsp-price-change"]').text.strip() if Suppe.Wähle eine('.priceChange[data-testid="qsp-price-change"]') sonst Keine Präsentation

Rückkehr {'ändern': ändern}

ausgeschlossen Exception as e:
drucken(f"Beim Scraping ist ein Fehler aufgetreten: {e}")
Rückkehr {}

6. Den Marktzeitstempel erhalten

Zuletzt werden wir auch den Marktzeitstempel extrahieren. Er bezieht sich auf das konkrete Datum, an dem die Preise berechnet werden. Wenn Sie beispielsweise „Zum Schluss“ gefolgt vom Datum „19. April 2024“ sehen, bedeutet dies, dass sich die bereitgestellten Informationen auf den Schlusskurs des Vermögenswerts am 19. April 2024 beziehen.

Beachten Sie auch: Wenn „Markteröffnung“ angezeigt wird, bedeutet dies, dass es sich bei dem angezeigten Preis um den Preis handelt, zu dem der Vermögenswert bei Markteröffnung gehandelt wurde.

Anmeldeschluss für Yahoo Finance

Markieren Sie die Daten und gehen Sie zu „Inspect“, um den zugehörigen Selektor abzurufen. Schreiben wir den Code noch einmal, um die Daten mit BeautifulSoup zu extrahieren.

1
2
3
4
5
6
7
8
9
10
11
12
13
def Daten scrapen(Antwort):
versuchen:
# Analysieren Sie den HTML-Inhalt mit Beautiful Soup
Suppe = Schöne Suppe(Antwort['Körper'], 'html.parser')

# Erforderliche Daten extrahieren
Marktzeitstempel = weiter((s.text.strip() für s in Suppe.Auswählen('div[slot="marketTimeNotice"] Spanne') if „Zum Schluss:“ in s.text or „Markt geöffnet“ in s.text), Keine Präsentation)

Rückkehr {„Marktzeitstempel“: Marktzeitstempel}

ausgeschlossen Exception as e:
drucken(f"Beim Scraping ist ein Fehler aufgetreten: {e}")
Rückkehr {}

7. Vollständiger Python-Code: Yahoo Finance Scraper

Nachdem wir den Selektor für alle unsere Zieldaten geschrieben haben, ist es an der Zeit, den Code zu kompilieren und unseren Scraper in Aktion zu setzen. Zu Ihrer Bequemlichkeit haben wir den folgenden Code kompiliert und einige Zeilen hinzugefügt, um die Antwort als JSON-Datei zu speichern. Sie können ihn gerne kopieren und auf Ihrem lokalen Computer speichern:

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
von Crawlbase importieren CrawlingAPI
von bs4 importieren BeautifulSuppe
importieren JSON

def kriechen(Seiten-URL, API-Token):
versuchen:
# Initialisieren Sie das CrawlingAPI-Objekt mit dem bereitgestellten Token
api = CrawlingAPI({'Zeichen': api_token})

# Holen Sie sich den Seiteninhalt
Antwort = api.get(Seiten-URL)

# Überprüfen Sie, ob die Anfrage erfolgreich war
if Antwort['Statuscode'] != 200:
drucken(f"Fehler: {Antwort}")
Rückkehr {}

# Gescrapte Daten
scraped_data = scrape_data(Antwort)
drucken(f'{gescrapte_Daten}')
Rückkehr Scraped_Data

ausgeschlossen Exception as e:
drucken(f"Beim Crawlen ist ein Fehler aufgetreten: {e}")
Rückkehr {}

def Daten scrapen(Antwort):
versuchen:
# Analysieren Sie den HTML-Inhalt mit Beautiful Soup
Suppe = Schöne Suppe(Antwort['Körper'], 'html.parser')

# Erforderliche Daten extrahieren
Titel = Suppe.select_one(„div.hdr h1“).text.strip() if Suppe.Wähle eine(„div.hdr h1“) sonst Keine Präsentation
Preis = Suppe.select_one('.livePrice[data-testid="qsp-price"]').text.strip() if Suppe.Wähle eine('.livePrice[data-testid="qsp-price"]') sonst Keine Präsentation
ändern = Suppe.select_one('.priceChange[data-testid="qsp-price-change"]').text.strip() if Suppe.Wähle eine('.priceChange[data-testid="qsp-price-change"]') sonst Keine Präsentation
Marktzeitstempel = weiter((s.text.strip() für s in Suppe.Auswählen('div[slot="marketTimeNotice"] Spanne') if „Zum Schluss:“ in s.text or „Markt geöffnet“ in s.text), Keine Präsentation)

Rückkehr {‚Titel‘: Titel, 'Preis': Preis, 'ändern': ändern, „Marktzeitstempel“: Marktzeitstempel}

ausgeschlossen Exception as e:
drucken(f"Beim Scraping ist ein Fehler aufgetreten: {e}")
Rückkehr {}

if __name__ == "__hauptsächlich__":
# Verwenden Sie das Javascript-Anforderungstoken von Crawlbase
api_token = 'Crawlbase_Token'

# Liste der zu crawlenden Aktien
Aktien = ['AAPL', 'TSLA', „BTC-USD“]
Aktiendaten = {'Aktien': []}

für -bestands- in Aktien:
Seiten-URL = f'https://finance.yahoo.com/quote/{Aktie}'

# Rufen Sie die Crawl-Funktion auf und hängen Sie die Scraped-Daten an das stocks_data-Wörterbuch an
Aktiendaten['Aktien'].anhängen(crawl(Seiten-URL, API-Token))

# Schreiben Sie die Scraped-Daten in eine JSON-Datei
mit elektrostatisch ableitenden XNUMXh geöffnet('yahoo.json', 'w') as f:
json.dump(stocks_data, f)

Führen Sie den Code aus, um die Antwort zu erhalten. Verwenden Sie den folgenden Befehl:

1
Python Scraper.py

Bei Erfolg sollte eine ähnliche Ausgabe wie unten dargestellt erfolgen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"Aktien": [
{
„Titel“: „Apple Inc. (AAPL)“,
"Preis": "168.99",
"Veränderung": -3.70,
"Schlusstermin": „Stand 12:09 Uhr EDT. Markt geöffnet.“
},
{
„Titel“: „Tesla, Inc. (TSLA)“,
"Preis": "156.90",
"Veränderung": -4.58,
"Schlusstermin": „Stand 12:09 Uhr EDT. Markt geöffnet.“
},
{
„Titel“: „Bitcoin USD (BTC-USD)“,
"Preis": "61,966.21",
"Veränderung": -2,804.80,
"Schlusstermin": „Stand 4:08 Uhr UTC. Markt geöffnet.“
}
]
}

Da ist es. Die Antwort im JSON-Format ermöglicht Ihnen, die Daten effektiv zu nutzen. Verwenden Sie sie, um den Aktienmarkt zu analysieren, Preise zu vergleichen usw. Sie haben die Wahl.

8. Abschließende Gedanken und nächste Schritte

Sie haben eine umfassende Anleitung zum effizienten Erstellen eines Scrapers für Yahoo Finance mit Python abgeschlossen. Crawlbase API und BeautifulSoup. Sie haben gelernt, wie Sie saubere und nützliche Daten aus Webseiten extrahieren und für Ihre Projekte oder Analysen anpassen.

Der in diesem Handbuch freigegebene Code ist für alle Interessierten verfügbar. Wir ermutigen Sie, sich aktiv damit zu beschäftigen, da er für alle nützlich sein kann, einschließlich aller Arten von Entwicklern, Datenwissenschaftlern oder sogar für neugierige Lernende. Sie können den Code beliebig ändern und an Ihre spezifischen Anforderungen anpassen. Optimieren Sie ihn für die Automatisierung, das Scraping von Daten von anderen Websites, das Extrahieren verschiedener Arten von Informationen oder das Hinzufügen neuer Funktionen.

Wir empfehlen die Integration mit Crawlbase Crawling API, das IP-Rotation, CAPTCHAs und Rendering übernimmt.

9. Häufig gestellte Fragen (FAQs)

Ja, Web Scraping an sich ist nicht grundsätzlich illegal, aber es ist wichtig, die Nutzungsbedingungen der Website, die Sie scrapen, zu überprüfen und einzuhalten. Yahoo Finance hat möglicherweise wie viele andere Websites spezielle Geschäftsbedingungen für Web Scraping-Aktivitäten. Machen Sie sich unbedingt mit diesen Bedingungen vertraut, um rechtliche Probleme zu vermeiden.

Wie kann ich Daten von Yahoo Finance scrapen?

  1. Identifizieren Sie die zu scrapenden Daten und überprüfen Sie die Website
  2. Wählen Sie ein Scraping-Tool oder eine Bibliothek aus, um Daten aus den Webseiten zu extrahieren
  3. Verwenden Sie das ausgewählte Scraping-Tool, um eine HTTP-GET-Anfrage an die Ziel-URL zu senden
  4. Analysieren Sie den HTML-Inhalt der Webseite mithilfe der Analysefunktionen des Scraping-Tools.
  5. Je nach Bedarf können Sie die Scraped-Daten zur späteren Analyse in einer Datei, Datenbank oder Datenstruktur speichern oder direkt in Ihrer Anwendung verwenden.

Welche Tools und Bibliotheken kann ich zum Scraping von Yahoo Finance verwenden?

Es gibt verschiedene Tools und Bibliotheken für Web Scraping in Python, darunter BeautifulSoup, Scrapy und Selenium. Darüber hinaus können Sie APIs wie diese nutzen: Crawlbase API für einfacheren Zugriff auf Webdaten. Wählen Sie das Tool oder die Bibliothek, die am besten zu Ihren Projektanforderungen und Ihrem technischen Know-how passt.