Daten abrufen aus dem Web
Schritt-für-Schritt-Anleitung
Um Daten aus dem Web in Excel abzurufen, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Erstelle ein neues Modul:
- Klicke im Menü auf
Einfügen
> Modul
.
-
Füge den folgenden Code ein:
Private Sub GetWebWert()
Dim doc As Object
Dim url As String
url = "https://www.dresden.gold/goldbarren-20-gramm-combibar-valcambi.html"
Set doc = CreateObject("htmlFile")
With CreateObject("MSXML2.XMLHTTP.6.0")
.Open "GET", url, False
.Send
doc.body.innerHTML = .responseText
Debug.Print Trim(Split(doc.getElementsByClassName("price")(2).innerText, "€")(0)) * 1
Debug.Print Trim(Split(doc.getElementById("product-price-14").innerText, "€")(0)) * 1
End With
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Führe das Makro aus:
- Drücke
ALT + F8
, wähle GetWebWert
und klicke auf Ausführen
.
Nun solltest du die gewünschten Werte im Direktfenster (Debug.Print) sehen.
Häufige Fehler und Lösungen
Alternative Methoden
-
Verwendung von JSON-APIs:
- Statt direkt aus HTML zu scrapen, kannst du APIs nutzen, die strukturierte Daten bereitstellen. Ein Beispiel ist die API von
wertpapiere.ing.de
, die Informationen zu Wertpapieren bereitstellt, wie zum Beispiel für die ISIN LU1781541179
.
-
Selenium für VBA:
- Mit SeleniumBasic kannst du Webinhalte auslesen, ohne auf den Internet Explorer angewiesen zu sein. Dies ermöglicht das Scraping von dynamischen Inhalten.
Praktische Beispiele
Hier sind zwei praktische Beispiele, um Werte aus verschiedenen Webseiten zu extrahieren.
-
Goldbarren-Preise:
Debug.Print Trim(Split(doc.getElementsByClassName("price")(2).innerText, "€")(0)) * 1
-
Wertpapierpreise (z.B. LU1781541179):
Debug.Print doc.getElementsByClassName("instrument-price")(0).innerText
Diese Code-Schnipsel zeigen, wie du spezifische Preise von Webseiten auslesen kannst.
Tipps für Profis
-
Nutze die Entwicklerwerkzeuge deines Browsers, um die Struktur der HTML-Dokumente zu verstehen. Überprüfe die Klassen- und ID-Namen, um sicherzustellen, dass du die richtigen Elemente ansteuert.
-
Verwende Debug.Print
in deinem VBA-Code, um Ausgaben im Direktfenster zu sehen. Dies hilft dir, Fehler zu identifizieren und sicherzustellen, dass die gewünschten Werte abgerufen werden.
-
Lerne über Web Scraping: Suche nach Begriffen wie "Web Scraping" und "DOM" (Document Object Model), um ein besseres Verständnis für den Umgang mit HTML-Dokumenten zu erhalten.
FAQ: Häufige Fragen
1. Wie kann ich die Werte automatisch aktualisieren?
Du kannst das Makro in regelmäßigen Abständen ausführen lassen, indem du es mit einem Timer kombinierst oder ein Ereignis in Excel nutzt, das die Aktualisierung auslöst.
2. Welche anderen Webseiten kann ich scrapen?
Du kannst grundsätzlich jede Webseite scrapen, solange du die richtigen Klassen- und ID-Namen kennst. Achte jedoch auf die Nutzungsbedingungen der jeweiligen Webseite.
3. Was ist der Unterschied zwischen getElementById
und getElementsByClassName
?
getElementById
gibt ein einzelnes Element zurück, während getElementsByClassName
eine Sammlung von Elementen zurückgibt, die du in einer Schleife durchlaufen musst.