Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten aus Webseite auslesen

Daten aus Webseite auslesen
13.02.2017 17:48:01
Hauke
Hallo zusammen,
es steht die Überlegung im Raum, eine bestimmte Information auf dieser Seite zu extrahieren und direkt in einem Userform anzuzeigen:
Die Verlinkung habe ich bereits erstellt mit:
ActiveWorkbook.FollowHyperlink Address:="http://www.gcmap.com/dist?P=" & Label13 & "-" & Label16 & "&DU=km", NewWindow:=True
Wenn das Userform geöffnet wird, soll das Userform im hintergrund die Daten aus Label13 und aus Label16 an die Seite übergeben und das Kilometer ergebnis direkt in Label20 im Userform angezeigt werden.
Ist das wohl möglich?
Viele Grüße,
Hauke-Christian
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Webseite auslesen
13.02.2017 19:24:14
ChrisL
Hi Hauke
Möglich ja, aber...
Hyperlink ist eine "Einbahn" und öffnet nur die Webseite. Dein Muster-Code sieht diesbezüglich OK aus und sollte funktionieren?
Um den Inhalt der Webseite zu extrahieren, müsstest du ein Browser-Objekt erzeugen und den HTML Inhalt auslesen. In Zusammenhang mit Google-Maps findest du diverse Codebeispiele z.B.
https://www.herber.de/forum/archiv/1416to1420/1416919_Entfernung_mit_Google_Maps_berechnen.html
(gibt auch noch andere, vollständigere Codes im Archiv, aber die Antwort von Frank fand ich interessant)
Google Maps bietet API, im Gegensatz zu deiner Seite (mindestens konnte ich keine Hinweise in den FAQ finden).
https://de.wikipedia.org/wiki/Programmierschnittstelle
https://developers.google.com/maps/documentation/distance-matrix/intro?hl=de
API ist gut, weil die Resultate werden als strukturierte Daten (XML) zurück gegeben. Bei deiner Seite müsste man den ganzen HTML-Code "zerpflücken" um die richtige Code-Stelle mit der Distanz zu finden. Dies ist zwar keine Hexerei, aber wenn die Webseite ändert, musst du den Code anpassen. Darum ein paar Gedanken zu Alternativen:
1. Ich verstehe gcmap berechnet die Luftlinie (keine echten Flugrouten); könnte dies Google-Maps nicht auch? Den richtigen API Parameter (manuell gehts) habe ich auf die Schnelle zwar nicht gefunden, aber der müsste schon irgendwo sein.
2. Die Aktion funktioniert nur wenn du eindeutige Destinationen hast (Liste hinterlegen?). Evtl. könnte man die Flughafenliste inkl. Koordinaten downloaden und die Distanz gemäss dem Beitrag von Franz selber berechnen (Vorteil funktioniert auch Offline).
cu
Chris
Anzeige
AW: Daten aus Webseite auslesen
14.02.2017 09:57:06
Hauke-Christian
Guten Morgen Chris,
danke dir erstmal für deine Antwort. Ja an eine API Schnittstelle habe ich auch schon gedacht, allerdings muss es eben diese Seite sein.
Ich werde mich mal dran setzen und den html Code zerpflücken. Vllt finde ich ja die passenden Parameter.
VG,
Hauke-Christian
Anzeige
AW: Daten aus Webseite auslesen
14.02.2017 12:51:25
Zwenn
Hallo Hauke,
Du solltest über das Document Object Modell (DOM) zu einer Lösung gelangen. Habe unter folgendem Link mal etwas dazu geschrieben:
https://www.herber.de/cgi-bin/callthread.pl?index=1492241#1493245
Viele Grüße,
Zwenn
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Daten aus Webseiten auslesen in Excel


Schritt-für-Schritt-Anleitung

Um Daten aus einer Webseite auszulesen, kannst du VBA (Visual Basic for Applications) in Excel verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Kopiere und füge diesen Code ein:

    Sub WebseiteAuslesen()
       Dim ie As Object
       Set ie = CreateObject("InternetExplorer.Application")
       ie.Visible = False ' Setze auf True, um den Browser zu sehen
    
       ' Webseite öffnen
       ie.Navigate "http://www.gcmap.com/dist?P=Parameter1-Parameter2&DU=km"
    
       ' Warte bis die Seite geladen ist
       Do While ie.Busy Or ie.readyState <> 4
           DoEvents
       Loop
    
       ' HTML-Inhalt auslesen
       Dim html As Object
       Set html = ie.document
    
       ' Beispiel: Wert aus einem bestimmten HTML-Element auslesen
       Dim wert As String
       wert = html.getElementById("ID_des_Elements").innerText
    
       ' Wert in eine Zelle schreiben
       ThisWorkbook.Sheets(1).Range("A1").Value = wert
    
       ' Internet Explorer schließen
       ie.Quit
       Set ie = Nothing
    End Sub
  4. Anpassen des Codes: Ersetze Parameter1 und Parameter2 durch die gewünschten Werte und ID_des_Elements durch die ID des HTML-Elements, das du auslesen möchtest.

  5. Führe das Makro aus: Drücke F5, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler: "Das Objekt unterstützt diese Eigenschaft oder Methode nicht."

    • Lösung: Überprüfe die ID des HTML-Elements, das du auslesen möchtest. Stelle sicher, dass die Webseite beim Öffnen die richtige Struktur hat.
  • Fehler: "Internet Explorer kann nicht gestartet werden."

    • Lösung: Stelle sicher, dass Internet Explorer auf deinem Computer installiert und nicht deaktiviert ist.

Alternative Methoden

  1. Power Query: Du kannst auch Power Query in Excel verwenden, um Daten direkt von Webseiten auszulesen. Gehe zu Daten > Daten abrufen > Aus anderen Quellen > Aus dem Web.

  2. API-Nutzung: Wenn die Webseite eine API anbietet, kannst du strukturierte Daten abfragen. Informiere dich über die verfügbaren Endpunkte und deren Nutzung.


Praktische Beispiele

  • Entfernung zwischen zwei Orten: Verwende die oben gezeigte Methode, um die Entfernung zwischen zwei Flughäfen zu berechnen, indem du die entsprechenden Parameter in der URL anpasst.

  • Wetterdaten abrufen: Nutze eine Webseite, die Wetterinformationen bereitstellt, und passe den VBA-Code an, um die gewünschten Daten auszulesen.


Tipps für Profis

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlungsroutine in deinem VBA-Code, um mögliche Laufzeitfehler abzufangen und zu behandeln.

  • Regelmäßige Updates: Wenn du regelmäßig Daten aus einer Webseite auslesen möchtest, überlege, ob du den Prozess automatisieren kannst, z.B. durch regelmäßige Ausführung deines Makros.


FAQ: Häufige Fragen

1. Wie kann ich Daten aus mehreren Webseiten gleichzeitig auslesen?
Du kannst eine Schleife in deinem VBA-Code implementieren, die nacheinander die gewünschten URLs abarbeitet.

2. Ist es notwendig, Internet Explorer zu verwenden?
Es gibt alternative Ansätze, wie die Verwendung von Power Query oder das Ansteuern von APIs, die nicht auf Internet Explorer angewiesen sind.

3. Was passiert, wenn sich die Struktur der Webseite ändert?
Du musst möglicherweise deinen VBA-Code anpassen, um die neuen IDs oder Strukturen der HTML-Elemente zu berücksichtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige