我熟悉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
答案 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之一