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

Daten aus Webseiten auslesen mittels Selenium

Daten aus Webseiten auslesen mittels Selenium
07.12.2019 13:09:28
Andi
Hallo zusammen,
ich hoffe es kann mir jemand weiterhelfen. Ich möchte Daten aus Webseiten auslesen und ins Excel übertragen. Dafür habe ich ein Makro, welches ursprünglich mit dem Internet Explorer 11 funktionierte. Nun ist dieser leider nicht mehr auf meinem Rechner und ich habe gelesen, dass es mit Selenium funktioniert.
Leider bekomme ich mit Selenium (SeleniumBasic-2.0.9.0.exe) bei allen Browsern (edge, Firefox, Chrome) Laufzeitfehler mit Verweis, dass irgendwelche Treiber nicht stimmen. Kann mir bitte jemand sagen, welcher Browser mit welchen Treibern am besten funktioniert (bitte Links der Treiber angeben).
Mit dem Chrome Browser komme ich am weitesten (siehe folgendes Beispiel):

Sub test ()
Dim Selenium As New WebDriver
Dim url as string
url = "https://www.onvista.de/“
Selenium.Start "chrome"
Selenium.Timeouts.PageLoad = 2000
Selenium.Get url, Raise:=False
Set knoten = Selenium.FindElementById("searchValue")
knoten.SendKeys ("DE000A1EWWW0")
Set knoten = Selenium.FindElementById("siteSearch")
knoten.Submit
End Sub

Nach dem Begriff „knoten.Submit“ wird die gewünschte Ansicht sogar noch im Browser geladen und angezeigt, dann kommt folgender Fehler:
Laufzeitfehler 21
Timeout Error
Timeout
(session info: chrome=78.0.3904.108)
(Driver info: chrome = 78.0.3904.105)
(……..
Bei allen anderen Browsern kommt ein Laufzeitfehler schon nach dem Begriff „Selenium.Start“.
Grüße
Andi

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: muss es Selenium sein?
07.12.2019 13:17:54
Fennek
Hallo,
Selenium ist primär zur Unterstützung von Entwicklern.
Warum versuchtst Du es nicht mit MSXML2.XMLHttp oder Powershell?
mfg
Umsetzung XMSXML2.XMLHTTP als Excel VBA Makro
08.12.2019 17:13:49
Andi
Hallo Fennek,
vielen Dank für die Info.
Wie ich sehe kann man XMSXML2.XMLHTTP scheinbar auch als Excel VBA Makro umsetzen, aber leider funktionieren die Funktionen .getElementsByClassName und .getElementsByTagName nicht mehr wie gewünscht.
Wie müsste denn das folgende Skript, welches mit dem Internet Explorer 11 funktioniert mit XMSXML2.XMLHTTP aussehen?

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Sub test()
Dim ie As Object
Dim url As String
Dim knoten As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
url = "https://www.onvista.de/"
ie.Navigate url
Do While ie.Busy Or ie.ReadyState  4: DoEvents: Loop
Do While ie.Busy Or ie.ReadyState  4: DoEvents: Loop
Set knoten = ie.Document.getElementByID("searchValue")
knoten.Select
knoten.innerText = "DE000A1EWWW0"
Sleep 2000
Set knoten = ie.Document.getElementByID("siteSearch")
knoten.Submit
Sleep 2000
Set knoten = knoten.getElementsByClassName("FUNDAMENTAL_ANALYSE")
Set knoten = knoten.getelementsbytagname("div")(0)
Set knoten = knoten.getelementsbytagname("table")(0)
Set knoten = knoten.getelementsbytagname("tbody")(0)
Set knoten = knoten.getelementsbytagname("tr")(6)
Set knoten = knoten.getelementsbytagname("td")(0)
Set knoten = knoten.getelementsbytagname("span")(0)
Cells(1, 1).Value = knoten.innerhtml
End Sub

Soweit habe ich es bereits geschafft umzusetzen:

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Sub XML()
Dim XMLHTTP As Object
Dim html As Object
Dim url
Dim knoten As Object
Set html = CreateObject("htmlfile")
Set XMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
url = "https://www.onvista.de/"
XMLHTTP.Open "GET", "https://www.onvista.de/", False
XMLHTTP.setRequestHeader "Content-Type", "text/xml"
XMLHTTP.Send
html.body.innerhtml = XMLHTTP.ResponseText
Set knoten = html.getElementByID("searchValue")
knoten.Select
knoten.innerText = "DE000A1EWWW0"
Sleep 2000
Set knoten = html.getElementByID("siteSearch")
knoten.Submit
Sleep 2000
Set knoten = knoten.getElementsByClassName("FUNDAMENTAL_ANALYSE")
Set knoten = knoten.getelementsbytagname("div")(0)
Set knoten = knoten.getelementsbytagname("table")(0)
Set knoten = knoten.getelementsbytagname("tbody")(0)
Set knoten = knoten.getelementsbytagname("tr")(6)
Set knoten = knoten.getelementsbytagname("td")(0)
Set knoten = knoten.getelementsbytagname("span")(0)
Cells(2, 1).Value = knoten.innerhtml
End Sub
Bei „Set knoten = knoten.getElementsByClassName("FUNDAMENTAL_ANALYSE")“
bricht das Programm ab mit Laufzeitfehler 438.
Grüße
Andi
Anzeige

193 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige