Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

HTML-Element ansprechen mit Http-Request

Forumthread: HTML-Element ansprechen mit Http-Request

HTML-Element ansprechen mit Http-Request
19.06.2024 17:39:08
Marc
Hallo zusammen,

ich möchte auf der folgenden Seite via Makro eine CSV-Datei herunterladen, wobei das gewünschte Symbol bereits über die Url praktisch aufgerufen werden kann

z.B.

https://www.cboe.com/delayed_quotes/tsla/quote_table

Nun möchte ich aber über die vorhandenen Filter-Menüs den gewünschten Datenumfang festlegen. (Genau genommen soll in allen Fällen die Auswahl "All" getroffen werden.)

Nun meine Frage:

Kann ich via HTTP-Request auf die Div-Elemente zugreifen und die entsprechende Auswahl anpassen und die Seite aktualisieren, so dass mir anschließend der gewünschte Download Link angezeigt wird?

Wenn jemand ein paar Tipps dazu hat, dann würde mir das sehr helfen.

VG
Marc
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
MSXML / AW: HTML-Element ansprechen mit Http-Request
19.06.2024 22:19:34
tobias
Hallo Marc,

meines Wissens ist MSXML dazu geeignet:

https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms763701(v=vs.85)

(Webtreffer auf die Schnelle, gibt bestimmt bessere Quellen)

Ich selbst löse diese Datenerhebungen außerhalb von Excel - ist Geschmackssache. Deshalb kann ich Dir dabei nicht weiterhelfen.

Gruß,
tobias
Anzeige
AW: HTML-Element ansprechen mit Http-Request
20.06.2024 13:40:15
Zwenn
Hallo Marc,

leider funktioniert Dein Vorhaben mit xhr (XML HTTP Request) nicht. Mit dieser Technologie können ausschließlich statische Dokumente von einem Web Server geladen werden. Es gibt keinerlei Dynamik über Formulare und JavaScript wird auch nicht ausgeführt. Manchmal gibt es die Möglichkeit alle benötigten Parameter wie Datumsgrenzen usw. bei einer Abfrage mitzugeben. Erstens habe ich die Möglichkeit auf die Schnelle nicht für die von Dir verlinkte gefunden und zweitens möchtest Du eine Datei runterladen.

Solche Downloads werden "on the fly" generiert. Das ist nicht das wirkliche Problem, denn das wird alles serverseitig erledigt und die fertige Datei wird ausgeliefert. Die Problematik liegt in der "Lieferkette". Du stellst im Client Deine gewünschten Parameter im Formular ein. Dann sendest Du die Abfrage an den Server. Dieser baut die neue Seite auf und liefert das fertige Dokument wieder an den Client. Nun kannst Du den Download Button klicken und sendest damit eine erneute Abfrage an den Server. Dieser baut die gewünschte Datei zusammen und liefert sie an den Client aus.

Das Problem an diesem "Frage- und Antwortspiel" ist, HTTP ist ein verbindungsloses Protokoll. Nach der ersten Kommunikation weiß der Web Server also gar nicht mehr, wer Du bist. Um diesen Umstand zu umgehen, gibt es die sogenannten Seassions und zu diesen gehört eine SeassionID. Wenn diese im Cookie übergeben wird, kann man sie abgreifen und für die nächste Anfrage wieder als Cookie mitschicken. Das ist der einfachste Fall.

Der Aufwand über xhr (bzw. über WinHTTP, da xhr den "Trick" mit den Cookies nicht kann), ist also relativ groß und ich habe nur das genannt, was man als erstes ausprobieren würde. Es kann auch weitere Hürden geben, um auf diesem Weg ans Ziel zu kommen.

Du hast bereits den IE genannt und geschrieben, der ist veraltet. Für VBA gibt es jedoch die Möglichkeit der Browserautomatisierung über Seleniumbasic. Das muss installiert werden. Zusätzlich muss ein Web Driver für den gewünschten Browser installiert werden. Z.B. Chrome oder Edge. Hast Du auf dem verwendeten Rechner keine Adminrechte, bleibt Dir diese Möglichkeit jedoch auch verschlossen.

Ja, die letzte Version ist von 2016, aber Seleniumbasic funktioniert noch immer:
Übersicht: https://florentbr.github.io/SeleniumBasic/
Download: https://github.com/florentbr/SeleniumBasic/releases

Chrome Web Driver: https://developer.chrome.com/docs/chromedriver/downloads?hl=de
Edge Web Driver: https://developer.microsoft.com/de-de/microsoft-edge/tools/webdriver/?form=MA13LH

Hier noch eine kurze Anleitung auf StackOverflow, wie das Ganze in Betrieb genommen wird:
(Für ältere Versionsstände, aber das ist egal)
https://stackoverflow.com/questions/57216623/using-google-chrome-in-selenium-vba-installation-steps#57224810

Zu PQ kann ich nichts beisteuern, weil ich das nicht beherrsche. Wenn ich mich richtig erinnere, hat aber mal jemand (Günter?) erklärt, das solche Abfrageketten mit PQ auch nicht gehen. Dazu müssten die Kollegen mit entsprechendem Wissen etwas schreiben.

Viele Grüße,

Zwenn
Anzeige
AW: HTML-Element ansprechen mit Http-Request
24.06.2024 15:04:18
Marc
Hi Zwenn,

vielen Dank erstmal für Deine ausführlichen Hinweise!

Ich hab das Problem eigentlich schon so gut wie gelöst, indem ich den Selenium-Treiber über Powershell verwende bzw. Powershell aus VBA heraus starte.

Hab da zwar noch ein paar kleinere Herausforderungen aber ich hab es schonmal geschafft die Url an Powershell zu übergeben und im Browser zu laden.

Jetzt geht es darum, die Webelemente anzusteuern. Ist etwas tricky aber sollte klappen. Falls nicht, dann werde ich Deine Vorgehensweise in Betracht ziehen und schauen wie ich Selenium mit VBA zum Laufen bekomme.

VG
Marc
Anzeige
AW: MSXML / AW: HTML-Element ansprechen mit Http-Request
19.06.2024 23:35:45
Marc
Hi Tobias,

erstmal herzlichen Dank! Format ist klar, aber eben nicht wie man mit einem HTTP-Request in der DOM-Struktur Elemente ansprechen kann. Früher ging das mit dem Internet-Explorer Objekt aber diese Option ist nicht mehr gegeben. Allerdings hab ich schon eine potentielle Lösung.

Ich werde es mal mit Powershell versuchen. Powershell lässt sich wunderbar über Excel steuern und mit Powershell sollte das Ansprechen der Elemente und das Scrapen der Daten unproblematisch sein.

VG
Marc
Anzeige
;

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