使用VBA从谷歌术语搜索返回地址到Excel



我熟悉StackOverflow,但最近才注册。我正在尝试在谷歌上搜索酒店并使用VBA在Excel中返回地址。下面是我尝试从谷歌返回的信息的照片。从我的研究中,我能够找到一个VBA,允许我返回结果统计信息。

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

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

示例图片 - 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

现在,您的代码加载页面,然后加载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。

最新更新