Есть имя класса r
.Обратите внимание на следующее:
Option Explicit
Public Sub GetLinks()
Dim html As HTMLDocument, links As Object, i As Long, counter As Long
Set html = New HTMLDocument
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.google.co.uk/search?q=03701116565", False
.send
html.body.innerHTML = StrConv(.responseBody, vbUnicode)
End With
With html
Set links = .querySelectorAll(".r > [href] , .r h3")
End With
For i = 0 To links.Length - 1 Step 2
counter = counter + 1
ActiveSheet.Cells(counter, 1) = links.item(i)
ActiveSheet.Cells(counter, 2) = links.item(i + 1).innerText
Next
End Sub
Фактический href
связан с дочерним тегом a
, который предшествует элементу тега заголовка h3
, на который вы нацеливаетесь по классу.r
- это класс родителя тега a
.
Если вы хотите использовать позднюю границу, иПодобный подход к вашему, вы можете использовать менее эффективный следующий метод.Обратите внимание, что родительские элементы div выбраны, поэтому доступ к тегам a
и h3
возможен для соответствующих классов.
Option Explicit
Public Sub GetLinks()
Dim html As Object, i As Long
Dim objResultDiv As Object, objH3 As Object, link As Object
Set html = CreateObject("htmlfile")
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.google.co.uk/search?q=03701116565", False
.send
html.body.innerHTML = .responseText
End With
Set objResultDiv = html.getElementById("rso")
Set objH3 = objResultDiv.getElementsByTagName("div")
For Each link In objH3
If link.className = "r" Then
i = i + 1
On Error Resume Next
ActiveSheet.Cells(i, 2) = link.getElementsByTagName("a")(0).href
ActiveSheet.Cells(i, 3) = link.getElementsByTagName("h3")(0).innerText
On Error GoTo 0
End If
Next
End Sub