Чтобы ответить на ваши вопросы в целом, см. Ниже.
(1) текущий курс (класс span = "priceText__1853e8a5")
Это можно записать как селектор запросов CSS:
span.priceText__1853e8a5
(2) предыдущее закрытие (section class = "dataBox
"прежде всего, цена закрыта", "число 101" *
Это можно записать как селектор запросов CSS:
.dataBox.opreviousclosingpriceonetradingdayago.numeric
(3) скорость открытия (section class = "dataBox openprice numeric")
Это можно записать как селектор запросов CSS:
.dataBox.openprice.numeric
Они применяются с querySelector
или querySelectorAll
(если требуется более одного совпадения и более позднее совпадение, чем первое) из HTMLDocument
.
например.
Debug.Print IE.document.querySelector("span.priceText__1853e8a5").innerText
Если больше использовать querySelectorAll
IE.document.querySelectorAll("span.priceText__1853e8a5")(0).innerText
В приведенном выше примере вы заменяете 0 на соответствующий индекс, в котором находится целевой элемент.
Наблюдая за страницей, фактические селекторы выглядят следующим образом, но я думаю, что этот веб-сайт, вероятно, использует синтаксис ecmascript, который не поддерживается в устаревших браузерах, то есть Internet Explorer, или пытается заблокировать междоменные запросы.
Option Explicit
Public Sub GetInfo()
Dim IE As New InternetExplorer
With IE
.Visible = True
.navigate "https://www.bloomberg.com/quote/EURHKD:CUR"
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
Debug.Print "Current: " & .querySelector(".priceText__1853e8a5").innerText
Debug.Print "Prev close: " & .querySelector(".value__b93f12ea").innerText
Debug.Print "Open: " & .querySelector(".value__b93f12ea").innerText
End With
.Quit
End With
End Sub
При использовании Selenium Basic и Chrome страница отображается нормально:
Option Explicit
Public Sub GetInfo()
Dim d As WebDriver
Set d = New ChromeDriver
Const URL = "https://www.bloomberg.com/quote/EURHKD:CUR"
With d
.Start "Chrome"
.get URL
Debug.Print "Current: " & .FindElementByCss(".priceText__1853e8a5").Text
Debug.Print "Prev close: " & .FindElementByCss(".value__b93f12ea").Text
Debug.Print "Open: " & .FindElementByCss(".value__b93f12ea").Text
.Quit
End With
End Sub