使用VBA将Google术语搜索的地址返回到Excel

时间:2018-03-20 20:57:42

标签: excel vba excel-vba search elements

我熟悉StackOverflow,但刚刚注册了。我想在谷歌搜索一个酒店,并使用VBA返回Excel中的地址。以下是我尝试从Google返回的信息的照片。根据我的研究,我能够找到一个允许我返回结果统计数据的VBA。

是否可以修改我的代码并返回Google搜索顶部的框?

我真的很感谢你的帮助!下面是我用来返回搜索结果的VBA。

Sample Image - Red Roof Inn & Address

Sub SearchGoogle()
 Dim ie As Object
 Dim form As Variant
 Dim button As Variant
 Dim LR As Integer
 Dim var As String
 Dim var1 As Object
 LR = Cells(Rows.Count, 1).End(xlUp).Row
 For x = 2 To LR
 var = Cells(x, 1).Value
 Set ie = CreateObject("internetexplorer.application")
 ie.Visible = True
With ie
    .Visible = True
    .navigate "http://www.google.co.in"
    While Not .readyState = READYSTATE_COMPLETE
  Wend
End With
 'Wait some to time for loading the page
While ie.Busy
    DoEvents
 Wend
 Application.Wait (Now + TimeValue("0:00:02"))
 ie.document.getElementById("lst-ib").Value = var
 'Here we are clicking on search Button
 Set form = ie.document.getElementsByTagName("form")
Application.Wait (Now + TimeValue("0:00:02"))
Set button = form(0).onsubmit
form(0).submit
 'wait for page to load
While ie.Busy
    DoEvents
Wend
Application.Wait (Now + TimeValue("0:00:02"))
Set var1 = ie.document.getElementById("resultStats")
Cells(x, 2).Value = var1.innerText
 ie.Quit
 Set ie = Nothing
 Next x

 End Sub

1 个答案:

答案 0 :(得分:1)

现在您的代码加载页面,然后加载resultStats元素的值。

因此,您需要更改的代码部分是:

Set var1 = ie.document.getElementById("resultStats")
Cells(x, 2).Value = var1.innerText

问题的第一步是了解您尝试使用的HTML网页的DOM,在本例中为Google。我建议使用浏览器导航DOM,因为它可以让你很好地了解整个页面正在做什么。

如果您的目标是在宏的基础上执行此操作,则需要一条通过DOM的路径,该路径始终会将您带到您想去的地方。我建议打开两个不同搜索的页面,这样你就可以随时检查你的假设。

例如,您引用的框似乎位于名为kp-header的类中,因为您知道这可以构建通过DOM的路径以返回屏幕上显示的文本值。再次,您需要自己进行调查,以找到最适合您搜索的地方,因为kp-header只是我能找到的第一个有用的结果。

虽然请注意,根据您加载这些网页的速度,您可能会受到谷歌的限制,因为他们不鼓励抓取。什么是避免这些限制的更好选择,并避免自己必须调查所有谷歌的DOM将尝试并入谷歌的API之一