• Aktien
  • Bewertungsmodelle
  • Checklisten
  • Portfoliokonstruktion
  • Stock Screens
  • Top-Investoren
  • Daten & Tools

DIY Investor

Mit einem Value Investing Ansatz viel erreichen

  • Start
  • About
  • Blog
  • Bücher
  • Ideen
  • Toolbox
  • Lexikon
  • Kontakt
Du befindest dich hier: Home / Daten & Tools / Finanzdaten von Yahoo! Finance nach Google Sheets importieren: Web Scraping mit IMPORTXML

Aug 24 2018

Finanzdaten von Yahoo! Finance nach Google Sheets importieren: Web Scraping mit IMPORTXML


Importxml

Google Sheets hat eine Funktion integriert, die es uns erlaubt, Daten von anderen Finanzwebseiten wie z.B. von Yahoo! Finance direkt per Web Scraping in unser Spreadsheet zu importieren. Diese Funktion nennt sich IMPORTXML und ist von der Syntax her so einfach aufgebaut, dass ich diesen Weg, um Finanzdaten zu ziehen einfach hier bei DIY Investor vorstellen muss.

In diesem Artikel erläutere ich also kurz die Funktionsweise der IMPORTXML Funktion und gebe euch ein Beispiel, was ihr damit so alles machen könnt.


Was du in diesem Artikel lernst

  • Welche Finanzdaten sich mit der GOOGLEFINANCE Funktion direkt von Google Finanzen importieren lassen
  • Wie wir die IMPORTXML Funktion für den Import weitergehender Daten von anderen Services nutzen können
Mehr über die verschiedenen Optionen zum Import von Finanzdaten nach Excel bzw. Google Sheets erfahren

Die GOOGLEFINANCE Funktion

Bevor ich in die Details des Web Scrapings per IMPORTXML einsteige, vielleicht nochmal ein kleiner Umweg und ein paar Worte zu Google Sheets und der bereits integrierten GOOGLEFINANCE Funktion.

Google Sheets, die Google-Alternative zu Microsoft Excel hat ja bereits eine Funktion integriert, mit der wir uns Aktienkurse etc. direkt nach Google Sheets importieren können. Diese Funktion nennt sich GOOGLEFINANCE und ich nutze sie z.B. für mein Portfolioanalyse Tool, um die Performance meines Portfolios zu tracken.

Allerdings erlaubt die GOOGLEFINANCE Funktion nur den Import von wenigen ausgewählten Daten wie Aktienkurs, EPS und KGV (P/E). Daten zur Dividendenrendite oder auch zur Kapitalrendite (ROE, ROA) fehlen zum Beispiel in Google Finance komplett, sind aber vielleicht wichtig zum Screenen unseres Aktienuniversums.

Aufgrund der für den Import per IMPORTXML erforderlichen Rechenleistung solltet ihr die GOOGLEFINANCE Funktion aber soweit wie möglich nutzen.

Folgende Attribute stellt die Funktion für individuelle Aktien zur Verfügung (mehr findet ihr auch direkt bei Google):

  • „price“ – Kurs in Echtzeit, allerdings mit bis zu 20 Min Verzögerung
  • „priceopen“ – Eröffnungspreis
  • „high“ – Tageshoch
  • „low“ – Tagestief
  • „volume“ – Aktuelles Handelsvolumen
  • „marketcap“ – Marktkapitalisierung
  • „tradetime“ – Zeit des letzten Trades
  • „datadelay“ – Info zur zeitlichen Verzögerung der Realtime-Daten
  • „volumeavg“ – Durchschnittliches tägliches Handelsvolumen
  • „pe“ – KGV bzw. P/E Ratio
  • „eps“ – Gewinn je Aktie
  • „high52“ – 52-Wochen-Hoch
  • „low52“ – 52-Wochen-Tief
  • „change“ – Preisänderung seit dem letzten Schlusskurs
  • „beta“ – Beta Faktor
  • „changepct“ – Prozentuale Preisänderung seit dem letzten Schlusskurs
  • „closeyest“ – Schlusskurs des Vortages
  • „shares“ – Anzahl umlaufender Aktien
  • „currency“ – Währung der Aktie

Die IMPORTXML Funktion

Für den Import von zusätzlichen Daten, die es ja auf anderen Finanzwebseiten (Yahoo! Finance, Onvista etc.) durchaus gibt, können wir die Funktion IMPORTXML nutzen.

Die Funktion ist vom Aufbau bzw. der Syntax her ganz simpel und folgendermaßen definiert:

IMPORTXML(url, xpath_query)

mit den folgenden Variablen:

  • url – Die URL bzw. Webadresse der Seite, die wir mithilfe der IMPORTXML Funktion untersuchen möchten, also z.B. https://finance.yahoo.com/quote/HBH.DE (die URL zur Zusammenfassung der wesentlichen Finanzdaten der Hornbach Holding KGaA). Die Adresse muss dabei innerhalb der Funktion entweder in Anführungszeichen gesetzt werden oder aber auf eine andere Zelle in Google Sheets referenzieren, die die URL in Textform enthält
  • xpath_query – Der genaue Pfad zu den gewünschten Daten, z.B. für die Dividende: „//*[@id=’quote-summary‘]/div[2]/table/tbody/tr[6]/td[2]“. Ich werde gleich noch erläutern, wie dieser so genannte xpath zustande kommt, weitere Infos zu Syntax etc. von xpath könnt ihr aber schonmal bei W3Schools nachlesen.

In Google Sheets würde die Funktion, um die Dividende für die Hornbach Holding zu importieren also folgendermaßen aussehen:

=IMPORTXML(„https://finance.yahoo.com/quote/HBH.DE„,“//*[@id=’quote-summary‘]/div[2]/table/tbody/tr[6]/td[2]“)

Den richtigen XPATH für die IMPORTXML Funktion finden

Den richtigen XPATH finden wir, indem wir uns den Code der Webseite einmal im Detail ansehen. Dies können wir tun, indem wir mit der rechten Maustaste auf den für uns interessanten Kennwert (in diesem Fall die Dividende) klicken und dann im sich öffnenden Dialogfenster den Punkt „Untersuchen“ auswählen:

importxml xpath yahoo! finance

Bei anderen Browsern (ich nutze hier Google Chrome) kann die Anzeige des Codes etwas anders funktionieren. Wie ihr vielleicht bemerkt, funktioniert das Ganze ganz analog zu dem Vorgehen, welches ich in meinem Artikel zum Thema Web Scraping mit VBA beschrieben hatte.

Wenn ihr auf „Untersuchen“ geklickt habt, öffnet sich das folgende Fenster:

importxml xpath yahoo! finance

Hier solltet ihr bereits einige Elemente aus unserer IMPORTXML Funktion von oben wiederfinden. Vereinfacht gesprochen funktioniert das mit dem XPATH so:

Wir steigen in den Code ein, indem wir die nächstgelegene ID (oder auch Klasse) definieren. In diesem Fall wäre das  //*[@id=’quote-summary‘]. 

Anschließend sagen wir der Funktion, wo genau in dieser Verästelung der Webseite sie nach der Zahl für die Dividende suchen soll. Genauer gesagt befindet sich die richtige Stelle im zweiten DIV (div[2]), im Hauptteil der ersten Tabelle (table/tbody) in Zeile 6 (tr[6]) in der zweiten Zelle (td[2]). Als XPATH formuliert sieht dieser Teil dann so aus:

/div[2]/table/tbody/tr[6]/td[2] 

Ich hoffe das kommt auch aus der Grafik so einigermaßen heraus.

Und schon sind wir fertig. Mit der Funktion / Formel sollten wir nun die Dividende für die Hornbach Holding KGaA entsprechend in unser Google Sheets Tabellenblatt importieren können.


Die Funktion automatisieren

Wie üblich lässt sich die IMPORTXML Funktion auch leicht automatisieren. Wenn wir z.B. die Dividende für verschiedene Ticker gleichzeitig herunterladen möchten, dann können wir die URL in Abhängigkeit vom Ticker über die Funktion CONCATENATE definieren.

Aus https://finance.yahoo.com/quote/HBH.DE wird dann CONCATENATE(„https://finance.yahoo.com/quote/“,A2) wie aus dem folgenden Screenshot ersichtlich wird:

importxml - Finanzdaten von Yahoo! Finance mit Goolge Sheets

Wie ihr sehen könnt, könnt ihr auch den XPATH in einer anderen Zelle definieren und in der Formel einfach darauf verweisen. Allerdings müsst ihr dann auf die Ausgestaltung der Anführungszeichen achten (einfache versus doppelte).

Außerdem zu beachten: Bei zu vielen XML-Abfragen kann Google Sheets auch schonmal streiken. In diesem Fall werden die Zahlen dann nur sehr stark verzögert gezogen.


Fazit

Google Sheets ist Google’s Alternative zu Microsoft Excel. In vielen Punkten reicht Google Sheets zwar nicht an Excel heran, im Bereich des Imports von Finanzdaten bietet es aber einige Vorteile.

Anzeige

Zum einen gibt es die integrierte GOOGLFINANCE Funktion, mit der wesentliche Finanzdaten wie Aktienkurse, 52-Wochen-Hochs und -Tiefs etc. direkt ins Tabellenblatt integriert werden können.

Zum anderen ist es recht einfach, weitere Finanzdaten mithilfe der IMPORTXML Funktion von anderen Webseiten bzw. Finanzportalen zu importieren. Die IMPORTXML Funktion benötigt nämlich neben der URL auf der die gewünschte Information bzw. Kennzahl zu finden ist, nur den so genannten XPATH, in dem die genaue Position der Kennzahl auf der Webseite definiert wird.

Kleiner Nachteil des Imports von Finanzdaten mithilfe der IMPORTXML Funktion: Google Sheets kann nicht zu viele Aktionen gleichzeitig bewältigen. Nach meiner Erfahrung funktioniert aber der Download für einen Index mit 30-40 Einzelwerten und zwei Variablen aber noch recht problemlos.


Geschrieben von Axel · Kategorien: Daten & Tools

Anzeige

Comments

  1. Michael Haubs says

    28. Oktober 2018 at 12:56

    Vielen Dank für diesen sehr guten Beitrag. Er hat mir sehr geholfen.

    Was ist deine Erfahrung, wie man am besten an das ROE für GoogleSheets kommt?

    Antworten
    • Axel says

      29. Oktober 2018 at 5:57

      Danke dir! Den ROE kannst du von Yahoo! Finance importieren, wenn ich mich recht erinnere.

      Viele Grüße,
      Axel

      Antworten
  2. Michael Haubs says

    30. Oktober 2018 at 21:21

    =importxml(CONCATENATE(„https://finance.yahoo.com/quote/“,A2,“/key-statistics?p=“,A2,““),“//*[@id=’Col1-0-KeyStatistics-Proxy‘]/section/div[2]/div[1]/div[2]/div[3]/table/tbody/tr[2]/td[2]“)

    Habe ich versucht. Ich komme leider nicht darauf, was hier falsch ist. Eine Idee?

    Antworten
    • Axel says

      6. November 2018 at 7:04

      Bei mir funktioniert das hier:

      //*[@class=“Mb(10px) Pend(20px) smartphone_Pend(0px)“]/div[3]/table/tbody/tr[2]/td[2]

      Viele Grüße

      Antworten
  3. Tommy says

    9. Januar 2019 at 12:55

    Hallo, ich krieg das mit den Werten von z.B. Apple auf der yahoo summary site gut hin,
    z.B. Marktkapitalisierung: =IMPORTXML(„https://finance.yahoo.com/quote/AAPL“;“//*[@id=’quote-summary‘]/div[2]/table/tbody/tr[1]/td[2]“)

    Was aber nicht klappt ist z.B. die Enterprise Value unter Statistics:
    =IMPORTXML(„https://finance.yahoo.com/quote/AAPL/key-statistics?p=AAPL“;“//*[@id=’quote-summary‘]/div[2]/table/tbody/tr[1]/td[2]“)

    Hat da jemand eine Idee?

    Antworten
  4. Tommy says

    9. Januar 2019 at 13:36

    Hallo, vielleicht hat jemand eine Idee dazu:

    Von der Yahoo Finance Seite im Reiter Summary krieg ich z.B: die Market Cap raus:
    =IMPORTXML(„https://finance.yahoo.com/quote/AMI.AX?p=AMI.AX“;“//*[@id=’quote-summary‘]/div[2]/table/tbody/tr[1]/td[2]“)

    Vom Reiter Statistics krieg ich mit der selben Formel die EV nicht raus:
    =IMPORTXML(„https://finance.yahoo.com/quote/AMI.AX/key-statistics?p=AMI.AX“;“//*[@id=’Col1-0-KeyStatistics-Proxy‘]/section/div[2]/div[1]/div[1]/div/table/tbody/tr[2]/td[2]“)

    Vielleicht hat jemand eine Lösung dafür.

    Danke, Tommy

    Antworten
  5. Hans Meier says

    19. Februar 2019 at 10:38

    Ich suche eine Möglichkeit die Portfolio-Summe von einem Yahoo-Portfolio zu scrapen, hat da evtl. jemand eine Idee?

    Antworten
  6. Max says

    21. September 2019 at 7:59

    Danke erstmal für diese Informationen. Ich hatte dennoch Probleme, die Daten aus der Yahoo Statistik auszulesen, weil sich die Webseite anscheinend mit der Zeit ändert. Habe etwas recherchiert. Und bin dann auf die folgende Lösung gekommen:
    1. Check, dass das Sheet auf Englisch gestellt ist, wegen der Punktuationen. Sonst kommt es zu Parsing Problemen.

    2. =MTRANS(IMPORTXML(VERKETTEN(„https://finance.yahoo.com/quote/“,A3,“/key-statistics?p=“,A3,““““),“//tr“))

    Damit lassen sich alle Yahoo Statistik Datei in einer Zeile für die Aktie im Feld A3, z.B. A3 = AAPL schreiben. Am Besten ein blankes Sheet, wo man diese Dateien für alle Aktien schreiben kann. Von da aus kann man dann ja leicht weiter machen.

    Antworten
  7. Investor says

    6. Februar 2020 at 9:49

    Ein tolles Tool. Da mir Yahoo aber zu schwach ist, würde ich gerne Daten von anderen Webseiten holen. Ich bekomme aber immer die Rückmeldung „imported contend is empty“. Hast du evt. eine Lösung?
    https://quickfs.net/company/AAPL
    //*[@id=“ovr-table“]/tbody/tr[2]/td[2]
    =IMPORTXML(E20,E21) –>#N/A

    oder
    http://financials.morningstar.com/ratios/r.html?t=0P000001BW&culture=en&platform=sal
    //*[@id=“financials“]/table/tbody/tr[2]/td[1]
    =IMPORTXML(I13,I14) –>#N/A

    Antworten
  8. Dieter says

    23. Februar 2020 at 23:58

    Super Beitrag!
    Gibt es eine Möglichkeit auch Zertifikatekurse (wikifolios) automatisiert herunterzuladen?

    Antworten
  9. Hahu says

    20. April 2020 at 10:33

    Bei mir hat die Vorgehensweise zunächst nicht funktioniert.
    Habe dann aber die drei Fehler gefunden:
    1) Bei IMPORTXML muss die Trennung zwischen url und xpath_query mit einem „;“ und nicht mit einem „,“ erfolgen.
    2) Den Befehl CONCATENATE gibt es offenbar nicht mehr. Der Befehl lautet jetzt CONCAT.
    3) Auch bei CONCAT muss die Trennung der Argumente mit einem „;“ und nicht mit einem „,“ erfolgen.

    Antworten
  10. Lennard says

    25. April 2020 at 19:10

    Gibt es eine Möglichkeit en Prozentwert von dem absoluten zu trennen?

    Antworten
  11. MagicMike says

    20. November 2020 at 15:25

    Hallo,
    leider bin ich noch blutiger Anfänger beim Web Scraping. Wie komme ich bei folgendem Code zum „Current“ von 1,1%? Habe mir jetzt stundenlang einen abgebrochen 🙁

    Danke für die Hilfe

    Overview

    As of 11/19/2020

     SharePriceNAVPremium/Discount

    Current$33.05$32.691.10%

    52 Wk Avg$32.94$32.371.79%

    52 Wk High$40.20$39.0512.76%

    52 Wk Low$19.45$21.91-14.60%

    Antworten
  12. MagicMike says

    20. November 2020 at 15:31

    Natürlich nicht berücksichtigt, dass das gleich in HTML umgesetzt wird 🙁

    <!

    Overview

    As of 11/19/2020

     SharePriceNAVPremium/Discount

    Current$33.05$32.691.10%

    52 Wk Avg$32.94$32.371.79%

    52 Wk High$40.20$39.0512.76%

    52 Wk Low$19.45$21.91-14.60%

    –>

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.

ARTIKELSUCHE

TOP PICKS

Die Top Artikel auf DIY Investor aus meiner und aus Lesersicht


Aktienkurse mithilfe der Yahoo Finance API aus dem Netz ziehen bzw. Historische Kursdaten nach Excel importieren mit der Alpha Vantage API


Henry Singleton: Woran wir ein gutes Management erkennen


Deep Dive: Owner Earnings versus Free Cash Flow


Die Portfolio-Strategie von Mohnish Pabrai


Meine erste Eigentumswohnung


Die Basics über Kryptowährungen

MEISTGELESEN

Der Customer Lifetime Value (CLTV) und die Profitabilität von Geschäftsmodellen

Der Customer Lifetime Value (CLTV) und die Profitabilität von Geschäftsmodellen

Case Study Noble Group: Ein Lehrstück für aggressives Fair Value Accounting!

Case Study Noble Group: Ein Lehrstück für aggressives Fair Value Accounting!

Berkshire Hathaway 2018

Lessons Learned aus dem 2018 Berkshire Hathaway Aktionärsbrief

BOOKSHELF

Buch Review: Lights Out - Der lange Abstieg von General Electric

Buch Review: Lights Out – Der lange Abstieg von General Electric

Buch Review: Crash Landing - An Inside Account of the Fall of GPA

Buch Review: Crash Landing – An Inside Account of the Fall of GPA

Buch-Tipp: When the Wolves Bite von Scott Wapner

Buch-Tipp: When the Wolves Bite von Scott Wapner

Weitere Investment-Bücher >>

 

 
Weitere Artikel, die ich empfehle:

 

Color Coding & More: Ein übersichtliches Finanzmodell in Excel gestalten

Color Coding & More: Ein übersichtliches Finanzmodell in Excel gestalten

20. März 2022 / Excel, Daten & Tools
Geschäftsberichte mit Microsoft Word auf Veränderungen hin untersuchen

Geschäftsberichte mit Microsoft Word auf Veränderungen hin untersuchen

19. Dezember 2021 / Daten & Tools
Nur eine Zeile VBA-Code: IRR-Berechnung bzw. Goal Seek in Excel automatisieren

Nur eine Zeile VBA-Code: IRR-Berechnung bzw. Goal Seek in Excel automatisieren

27. Juni 2021 / Daten & Tools
10 empfehlenswerte Investing Podcasts

10 empfehlenswerte Investing Podcasts

6. Juni 2021 / Daten & Tools
Finbox: Die Investoren-Toolbox im Test

Finbox: Die Investoren-Toolbox im Test

23. August 2020 / Daten & Tools
Waterfall Charts in Excel: Veränderungen in EBIT und EBITDA verstehen

Waterfall Charts in Excel: Veränderungen in EBIT und EBITDA verstehen

17. Mai 2020 / Jahresabschlussanalyse, Daten & Tools
Update Yahoo Finance API 2020: Historische Aktienkurse per VBA Makro ins Excel laden

Update Yahoo Finance API 2020: Historische Aktienkurse per VBA Makro ins Excel laden

8. Mai 2020 / Daten & Tools
Excel Dashboard etc.: 4 hilfreiche Tools

Excel Dashboard etc.: 4 hilfreiche Tools

12. Oktober 2019 / Daten & Tools
Die 10 goldenen Regeln für die Erstellung eines Best Practice Excel-Modells

Die 10 goldenen Regeln für die Erstellung eines Best Practice Excel-Modells

6. September 2019 / Daten & Tools
Vergesst Makros: Mit dem Add-in von Alpha Vantage Aktienkurse direkt nach Excel importieren

Vergesst Makros: Mit dem Add-in von Alpha Vantage Aktienkurse direkt nach Excel importieren

23. August 2019 / Daten & Tools

Über uns
DIY Investing
FAQs

Wir sind auch hier gelistet

Blogverzeichnis Bloggerei.de

Finanzblogroll
Finanzblognews
valueDACH
Nachrichten-Fabrik
  • Impressum
  • Datenschutz
  • Kontakt
  • DIY Toolbox

© Copyright 2015-21 DIY Investor- Mit wenig Zeit viel erreichen · Alle Rechte vorbehalten