Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1568to1572
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmten Wert aus Onlinequelltext herausfiltern

Bestimmten Wert aus Onlinequelltext herausfiltern
22.07.2017 05:49:13
Rouven
Hallo zusammen,
ich Sitze derzeit mit einem Kollegen daran ein Excel-Aktientool zur Erkennung von Trendsignalen zu schreiben und zu automatisieren. Nun würde ich gerne aus dem Seitenquelltext der folgenden Seite http://www.boerse-online.de/aktien/index/DAX
den DAX-realtimewert aus dem Onlinequellcode extrahieren und zwar so schnell wie möglich da es darum geht einen Minutenchart in Sekundenticks aufzuzeichnen. Über die in Excel vorhandene Datenimportfunktion dauert es eindeutig zu lange. Dieser Wert wird im Endeffekt aufgelistet und bildet den Chart der Analysiert wird.
Externe Programme zuzulegen ist in diesem Fall leider keine Option. Ich würde mich sehr freuen wenn ihr mir bei der Datenextraktion aus dem Quelltext helfen könnt.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmten Wert aus Onlinequelltext herausfiltern
22.07.2017 14:46:32
Stefan

Sub html_auslesen()
Dim i As Integer
url = Cells(1, 2) ' Url in Zelle B2 eintragen
Dim Response As String
' Zugriff aufs Web
Dim WebBrowser As Object
Set WebBrowser = CreateObject("InternetExplorer.Application")
WebBrowser.Navigate url
' Warten, bis die Seite geladen ist. Hier musst du mal probieren wie schnell dein PC /  _
Verbindung ist und kannst die Wait Time nach und nach reduzieren.
Application.Wait (Time + TimeValue("00:00:05"))
For i = 3 To 5 'Hier angeben wie oft der Refresh gemacht werden soll; hier 3 bis 5; also 3  _
Durchläufe
Response = WebBrowser.Document.Body.InnerHtml
Cells(i, 3) = Response 'HTML Quelltext wird in Spalte C geschrieben
Response = 0
WebBrowser.Refresh
Application.Wait (Time + TimeValue("00:00:03"))' Hier musst du mal probieren wie schnell dein  _
PC / Verbindung ist und kannst die Wait Time reduzieren.
Next
WebBrowser.Quit
Set WebBrowser = Nothing
End Sub

Diesen Wert in Zelle B2 kopieren: Xspan class="caretdown red"YX/spanY
X durch ersetzen. Ging nicht anders hier zu posten.
Diese Formel in Zelle B3 kopieren: =TEIL(C3;FINDEN($B$2;C3)+LÄNGE($B$2);17)
Die Zelle B3 kannst du dann runterkopieren
VG
Stefan
Anzeige
AW: Bestimmten Wert aus Onlinequelltext herausfiltern
22.07.2017 14:48:29
Stefan
Bitte die Zeile
url = Cells(1, 2) ' Url in Zelle B2 eintragen
durch
url = Cells(2, 2) ' Url in Zelle B2 eintragen
ersetzen
AW: Bestimmten Wert aus Onlinequelltext herausfiltern
22.07.2017 17:19:23
Zwenn
Hallo Stefan,
um auf das vollständige Laden einer Seite zu warten braucht man den Schätzwert über Aplication.Wait in der Regel nicht. Ich habe vor etwa zwei Wochen das erste Mal erlebt, dass das notwendig war, weil die angesprochene Seite sehr merkwürdig geladen wurde.
Es gibt zwei Methoden, die genau so lange warten, bis der Browser eine Seite ganz geladen hat.
Do While WebBrowser.busy: DoEvents: Loop

und
Do Until WebBrowser.ReadyState = 4: DoEvents: Loop

Die erste Methode wartet generell bis der IE nicht mehr beschäftigt ist. Die zweite macht das gleiche beim Wert 4 für Ready State. Es gibt auch noch andere Werte, deren Bedeutung ich grade nicht im Kopf habe.
Viele Grüße,
Zwenn
Anzeige
AW: Bestimmten Wert aus Onlinequelltext herausfiltern
25.07.2017 11:40:31
Rouven
Hey Leute,
Ich möchte mich Vielmals bei euch bedanken. Das hat bis jetzt alles super geklappt und jetzt bekomme ich es wie ich es brauche zurecht geschrieben. DANKEEE :-)
AW: Bestimmten Wert aus Onlinequelltext herausfiltern
22.07.2017 14:50:05
Stefan
Und weils so schön war.
Vorher stimmte der Quellcode.
Also: url = Cells(1, 2) ' Url in Zelle B2 eintragen ist richtig. Nur das Kommentar müsste heißen B1
AW: Bestimmten Wert aus Onlinequelltext herausfiltern
22.07.2017 14:55:11
Stefan
Ich weis ja nicht wie die Seite funktioniert.
Sofern dort ein echter Realtime Kurs gezeigt wird, kannst du dir den Refresh im Code sparen und sekündlich den Quellcode absaugen.
VG
Stefan
mit „Yahoo Finance API“
22.07.2017 16:13:33
Tino
Hallo,
habe mal etwas zusammengebaut.
Einziges was einigermaßen schnell geht ist die Abfragen über die „Yahoo Finance API“
Siehe dazu auch hier
http://diyinvestor.de/yahoo-finance-api/
Es gibt bestimmt noch andere, aber dafür bin ich nicht tief genug in der Materie!
Auf der Tabelle 2 habe ich mal 2 Aktien eingebaut, DAX und Lufthansa.
Name;
URL (mit Formel),
Ticker für diese Aktie (kann man auf der Seite https://finance.yahoo.com herausfinden)
Code für die Abfrage (siehe Link oben)
Auf der Tabelle 1 Button drücken,
aus der Auswahl eine Aktie auswählen,
den Intervall für die Abfrage einstellen
auf den ToggleButton offline drücken (wechselt zu online)
Tabelle1 wird geleert und die Auflistung wird im Intervall durchgeführt.
https://www.herber.de/bbs/user/115007.xlsm
Habe alles nur kurz an getestet, kleine Fehler können noch enthalten sein.
Gruß Tino
Anzeige
AW: mit „Yahoo Finance API“
22.07.2017 16:18:00
Rouven
Zunächst erstmal vielen Dank für eure Hilfestellung. Ich werde die Aktualisierung am Montag mal testen und nochmal Bescheid geben wie es aussieht. Ich bin mal gespannt ob es machbar ist.
Nicht machbar, wenn Du über die HTML Seite musst
22.07.2017 16:59:31
Zwenn
Hallo Rouven,
die Geschwindigkeit von einem Abruf pro Sekunde funktioniert niemals, wenn Du dafür jedesmal die HTML Seite neu laden musst. Die Anforderung und Auslieferung der Seite plus ihr Aufbau im Broweser dauert in den meisten Fällen schon länger. Bis dahin hat Dein Makro aber Null Daten verarbeitet. Auch wenn dieser Schritt der schnellste von allen sein dürfte.
An die Daten kommst Du über DOM (Document Object Modell) des Internet Explorers. Über eine API zu gehen ist aber vermutlich wesentlich schneller, wenn Du direkt auf eine Datenbank zugreifen kannst. Einfach weil Du damit den ganzen HTML Kram nicht benötigst.
Ich recycle mal etwas von meinem Text aus einem anderen Posting:
Da ich das Vorgehen dazu schon einige Male erklärt habe, verlinke ich einfach mal zwei Threads aus der Vergangenheit dazu:
Auslesen von NBA Ergebnissen:
https://www.herber.de/cgi-bin/callthread.pl?index=1492241#1493245
Excel Datei mit dem Makro zum Auslesen der NBA Ergebnisse:
(über den Ursprungs-Thread nicht mehr downloadbar)
www.herber.de/bbs/user/113778.xlsm
Weitere Erklärungen zum Auslesen von Daten über das DOM:
https://www.herber.de/cgi-bin/callthread.pl?index=1560197
Damit solltest Du einiges anfangen können, sofern Du Dich einigermaßen mit dem heutigen Aufbau von Webpages über HTML und CSS auskennst.
Viele Grüße,
Zwenn
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige