Требуется свойство .innerText
и индексирование в коллекцию, возвращаемую при сопоставлении по имени класса.
ie.document.getElementsByClassName("product-header__title")(0).innerText
Как и первый с этим именем класса, вы также можете использовать:
ie.document.querySelector(".product-header__title").innerText
.
- это селектор класса CSS и querySelector
, который применяет это к документу DOM и возвращает первое совпадение.
Обратите внимание, что поскольку коллекция возвращается с вашим синтаксисом, вам потребуется:
Dim Product_Title As Object
Set Product_Title = ie.document.getElementsByClassName("product-header__title")
Затем индексировать с помощью Product_Title(0).innerText
. Я не поклонник подчеркиваний в именах локальных переменных, поэтому я бы просто использовал productTitle
; также обратите внимание на изменение корпуса.
Если вы только после заголовка, было бы быстрее выдать XMLHTTP запрос , чем открывать экземпляр браузера IE:
Option Explicit
Public Sub GetTitle()
Dim sResponse As String, html As HTMLDocument
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.johnlewis.com/asus-zenbook-ux331un-eg009t-laptop-intel-%20core-i5-8gb-256gb-ssd-geforce-mx150-13-3-royal-blue/p3405316", False
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.send
sResponse = StrConv(.responseBody, vbUnicode)
End With
Set html = New HTMLDocument
With html
.body.innerHTML = sResponse
Debug.Print .querySelector(".product-header__title").innerText
End With
End Sub
Ссылки (VBE> Инструменты> Ссылки):
- Библиотека объектов Microsoft HTML