抓取Google Maps目的地

时间:2019-07-03 10:20:01

标签: excel vba web-scraping

我想编写一个用于抓取Google Maps目的地的代码。我可以使用https://www.google.com/maps/dir///访问目的地。

然后,我需要在FROM和TO字段中输入信息,选择TRAVEL MODE,然后单击SEARCH。 WebBrowser1嵌入到用户表单DistanceSite中。无法弄清楚如何单击Google地图上的“驾驶”按钮。

这是我当前的代码:

Private Sub CommandButton4_Click()

'On Error Resume Next

   With DistanceSite.WebBrowser1

        While .ReadyState <> 4
          DoEvents
        Wend

        With .Document

            .querySelector("div.gstl_50 .sbib_b [class=tactile-searchbox-input]").Value = ThisWorkbook.Sheets("Other Data").Range("BY17").Value

            .querySelector("div.gstl_51 .sbib_b [class=tactile-searchbox-input]").Value = ThisWorkbook.Sheets("Other Data").Range("BY18").Value

            .querySelector("div.widget-directions-travel-mode-switcher-container [class=directions-travel-mode-icon directions-drive-icon]").Click

        End With

        End With

    'If Err <> 0 Then

       'MsgBox "There was an error running the code. Check your Internet connection. Please try one more time!"
       'Else

    'End If

    'On Error GoTo 0

End Sub

1 个答案:

答案 0 :(得分:2)

您的班级选择器不能选择孩子。我想,不看,您就错过了一个或多个复合类。在这种情况下,只需将复合类中的单个类(如果您选择了正确的类)与父类结合使用:

.widget-directions-travel-mode-switcher-container .directions-drive-icon

您还可以使用属性=值选择器

ie.document.querySelector("[aria-label=Driving]").click

id可能是动态的,这就是为什么我在下面的示例中使用占位符属性的原因。经过英国设置的测试。

Option Explicit
Public Sub ClickButton()
    Dim ie As New InternetExplorer
    With ie
        .Visible = True
        .Navigate2 "https://www.google.com/maps/dir//"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document
            .querySelector("[placeholder='Choose starting point, or click on the map...']").Value = "Aylesbury"
            .querySelector("[placeholder='Choose destination...']").Value = "Brentford"
            .querySelector("[aria-label=Driving]").Click
        End With

        Stop '<delete me later

        .Quit
    End With
End Sub