Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1832to1836
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

Webseite fernsteuern

Webseite fernsteuern
17.06.2021 09:45:57
Ronald
Grüßt Euch alle
Wie könnte man eine Webseite fernsteuern? Es geht darum, einen gewissen Ablauf auf einer Webseite zu automatisieren. Also wie folgt:
- Webseite zeigt eine Auswahl
- automatisiert Auf der Seite diese Auswahl durchsuchen
- falls Wunschinhalt gefunden, nichts mehr tun...
- falls nicht gefunden, auf der Seite an einer bestimmten Stelle den Button klicken. Dann aktualisiert die Seite nämlich die Auswahl
- danach wieder diese aktualisierte Auswahl durchsuchen (geht mit STRG + F)
Mit VB6 gab es damals die Möglichkeiten mit hwnd, wenn ich mich nicht irre. Per MoveOver
den Objektnamen herausfinden und dann ansprechen. Aber bei mir ists zulange her.
Deswegen wende ich mich an Euch und würde mich freuen, wenn mir jemand helfen könnte.
Danke im Voraus.
Gruß Ronald

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Webseite fernsteuern
17.06.2021 19:18:35
Yal
Hallo Ronald,
Ich denke nicht, dass eine Webseite sich leicht mit einem VBA-Code steuern lässt.
Unter Firefox gibt es (u.a.) den Add-In UI.Vision RPA, das für solche Aufgabe kreiert worden sind. RPA steht für "Robotic Process Automation".
Es hat ein eigenes Skripting, das sich auch recorden lässt.
VG
Yal
AW: Webseite fernsteuern
17.06.2021 23:19:26
Ronald
Danke, ich werde das mal ausprobieren.
Gruß Ronald
AW: Webseite fernsteuern
18.06.2021 08:39:33
Ronald
Ich habe mir das angesehen. Es hat nicht den Anschein, als könne man da Bedingungen implementieren. Sowas wie "Führe das *recordete* Script aus, bis Suchtext gefunden."
Gruß Ronald
AW: Webseite fernsteuern
18.06.2021 09:08:01
EtoPHG
Hallo Ronald,
häääm... Die Selenium IDE ist eine vollständige Entwicklungplattform, die u.a. auf Javascript beruht.
Die hat einen Funktionsumfang und Interfaces, der weit über VBA hinausgeht. Die Integration in VBA dürfte aber mit Basiskenntnisse in VBA kaum zu bewältigen sein. Zudem sind Website-Administratoren dauernd bemüht automatisierte Abfragen iherer Information so weit wie möglich zu verhindern (Copyright, Eigentumsschutz, Bezahlung von Informationen...). Lesen heisst auch Verstehen!
Gruess Hansueli
Anzeige
AW: Webseite fernsteuern
18.06.2021 09:12:06
Ronald
Häääm?
Also ist das nichts für mich. Mit VS hatte ich bisher nichts am Hut.
Gruß Ronald
PS: Man muß also eigentlich nur das Window-Handle rausfinden und könnte das mit API umsetzen.
Sehe ich das falsch?
AW: Webseite fernsteuern
18.06.2021 10:17:56
Yal
Jein...
Internet-Seiten sind zwar mehr oder weniger "Progamme", aber die so gebaut werden, dass eine Interaktion mit dem Rechner, wo der Browser läuft, minimiert sind. Es bildet eine Insel. Es hat hauptsächlich Sicherheitgründe.
Ausserdem gibt es keinen Standard, worauf die Seitenbetreiber halten müssten und wenn es Standard gäbe, wie von Hansueli gemerkt hat, würden die Seitenbetreiber alles tun, um sich nicht daran zu halten.
JavaScript ist nicht so übel. In dem Fall von Selenium + Skript kann man zielgerichtet an der Sache rangehen. Es gibt viele Turorials und Beispiele.
Leichter wäre, wenn der Seitenbetreiber eine gut dokumentierte API hätte. Meistens sogenante REST-API. Diese sind auch über VBA ansprechbar, was aber nicht unbedingt das passendeste Werkzeug ist.
VG
Yal
Anzeige
AW: Webseite fernsteuern
18.06.2021 10:20:02
volti
Hallo Ronald,
PS: Man muß also eigentlich nur das Window-Handle rausfinden und könnte das mit API umsetzen.
Sehe ich das falsch?

Mit der API kannst Du Dein Anliegen m.E. nicht umsetzen. Die Web-Site besitzt ein Handle mit dem Du die Site in Gänze, (Größe, Position, Vordergrund etc.) manipulieren kannst und auch die paar Controls wie z.B. die Editbox zur Eingabe der Url.
Ansonsten hat der gesamte body, in dem sich nun die HTML-Elemente befinden, nur ein Handle. Dies HTML-Elemente sind keine Windows-Fenster und können daher mit den API-Funktionen nicht bestimmt und angesprochen werden.
Bislang steuer(t)e ich solche Anwendungen über den IE, der entsprechende Funktionalitäten bereithält...
Oder man möchte nur eine festgelegte Ablaufsteuerung durchführen, die z.B. mit simulierten Mausclicks (API Mouseevent) an bestimmten Stellen durchgeführt werden kann. Da kann aber nichts ausgelesen werden.
viele Grüße
Karl-Heinz
Anzeige
AW: Webseite fernsteuern
18.06.2021 10:11:43
Zwenn
Hallo Ronald,
der van Yal gepostete Lösungsansatz sieht für mich auf den ersten Blick brauchbar aus. Da Du wiederholt das Handle des IE erwähnst, musst Du die Seite schon manuell aufgerufen haben, bevor Du automatisiert darauf zugreifst? Das glaube ich eher nicht und deshalb brauchst Du das Handle eigentlich gar nicht, zumal man den IE auch anders "einfangen" kann. Aber ich kenne Deinen genauen Anwendungsfall natürlich nicht.
Sollte Deine Seite noch im IE laufen, kannst Du ihn vermutlich noch für Dein Anliegen verwenden. Davon rate ich allerdings ab, denn im IE werden schon heute immer mehr Seiten nicht angezeigt oder laufen nicht mehr richtig. Das geht hin bis zur Verweigerung der Seitenöffnung und automatischem Aufruf des Edge Browsers. Beispiel: https://www.leboncoin.fr/
Ab Juni 2022 wird der IE dann komplett "abgeschaltet" bzw. nicht mehr mitinstalliert. Deshalb ist es ratsam sämtliche Web Scraping Aufgaben schon jetzt abseits des IE zu programmieren. VBA ist dafür ganz sicher nicht die beste und nicht die einfachste Möglichkeit. Allerdings verwende ich "das alte Schlachtross" dafür auch noch immer.
Du hast zwei Möglichkeiten, wenn Du "from Scratch" programmieren willst. Entweder xhr (XML HTTP Request) oder Selnium (für VBS SeleniumBasic).
Mit xhr kannst Du nur Inhalte verarbeiten, die statisch sind, denn es wird kein JS ausgeführt. Heutzutage arbeiten die meisten Seiten zwar mit dynamischen Inhalten, aber bei einem Seitenaufruf werden mehrere Einzeldateien geladen. Darunter HTML-Dateien (in denen man schon oft findet, was man braucht) oder andere brauchbare Formate, wie JSON oder XML. Teilweise gibt es auch einfache Textdateien, die eigene Formate aufweisen.
Das Arbeiten mit xhr ist eher nix für Einsteiger in die Materie des Web Scraping. Unter anderem muss man wissen, ob man eine GET oder eine POST Anfrage an den WebServer stellen muss. Für POST dann zusätzlich, welchen Payload man mit übergeben muss. Der Payload kann unterschiedliche Informationen haben, die der WebServer zur korrekten Verarbeitung der Anfrage benötigt. Vergleichbar ist das mit der Parameterliste einer URL, die mit GET Aufrufen für den gleichen Zweck übergeben wird.
Hier ist ein Beispiel für den Einsatz von xhr für die Verarbeitung mit so einem eigenen Format. Die VBA Scripte oben im Thread sind Anwendungsbeispiele. Weiter unten sind zwei Dateien verlinkt. die zweite ist eine korrigierte Version der ersten und enthält die ganze Lösung der Anfrage des Thred Erstellers:
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1833060
Hier ist ein Thread, in dem auch einiges erklärt wird, was zum Teil eher allgemeiner Natur ist. Das Script von Anton enthält ebenfalls eine Lösung mit xhr:
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1825794
Selenium hingegen ist ein Framework, welches zur Testautomatisierung von Webseiten entwickelt wurde. Da es aber die komplette Fernsteuerung von Browsern beherrscht, ist es natürlich auch für Web Scraping einsetzbar. Selenium gibt es für unterschiedliche Programmiersprachen. VBA ist da von Haus aus nicht bei, aber jemand hat für VBA mal SeleniumBasic entwickelt.
Dazu, wie SeleniumBasic installiert werden muss und wie man die Installation testen kann, habe ich vor einiger Zeit hier etwas geschrieben:
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1831729#1831851
Unterm Strich ist es so, dass Web Scraping mit VBA Bibliotheken verwendet, die MS entweder mitbringt (xhr) oder die man selbst installieren muss (SeleniumBasic). Entsprechend müssen beide entweder als Verweise eingebunden werden (early binding) oder über ihre Objektklassen referenziert werden (late binding). Das Anwenden beider Lösungen hat also mit VBA erstmal eigentlich gar nix zu tun. VBA musst Du also obendrein können.
Hinzu kommt noch der Hinweis von Hansueli, dass Webseitenbetreiber zunehmend Abwehrmaßnahmen installieren. Es gibt inzwischen eigene Untzernehmen als Dienstleister, die sich darauf spezialisiert haben Web Scraping zu erkennen und zu unterbinden (https://datadome.co/de). Natürlich gibt es auch dafür "Gegenlösungen", die dann aber Geld kosten (auch als Dienstleistung) oder sehr viel Wissen für eigene Implementierungen voraussetzen (z.B. die Verwendung von Proxy Pools).
Vor dem Hintergrund dieses Postings und dem "geringen" Umfang Deines Anliegens (soweit ich es überblicke), solltest Du vielleicht noch einmal einen Blick auf eine Excel-eigene Lösung wie PQ werfen. Für eine Beurteilung der Machbarkeit müssten wir die Seite kennen, um die es geht. Du müsstest also die URL posten.
Viele Grüße,
Zwenn
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige