我有一个包含大约 25,000 个公司关键字的 Excel 工作簿,我想从中获取公司网站 URL。
我希望运行一个 VBA 脚本,该脚本可以将这些关键字作为 Google 搜索来运行,并将第一个结果的 URL 拉入电子表格中。
我发现了一个类似的线程。
这样做的结果是偶然的;某些关键字会在下一列中返回 URL,其他关键字则保留空白。
它还似乎在第一个搜索结果中提取了 Google 优化子链接的 URL,而不是主网站 URL:Google 搜索结果示例
然后我在这里找到了下面的代码,我在包含 1,000 个关键字的示例列表上运行了该代码。该博客的作者规定该代码适用于 Mozilla Firefox。
我测试了他也编写的 IE 代码,但这并没有达到相同的结果(它添加了由搜索结果中的描述性文本组成的超链接,而不是原始 URL)。
Firefox 代码一直运行到第 714行,然后返回错误消息
“运行时错误 91:未设置对象变量或 with 块变量”
显示成功结果和宏停止的行的电子表格布局
Sub GoogleURL ()
Dim url As String, lastRow As Long
Dim XMLHTTP As Object
Dim html As Object
Dim objResultDiv As Object
Dim objH As Object
lastRow = Range(“A” & Rows.Count).End(xlUp).Row
For i = 2 To lastRow
url = “https://www.google.co.uk/search?q=” & Cells(i, 1) & “&rnd=” & WorksheetFunction.RandBetween(1, 10000)
Set XMLHTTP = CreateObject(“MSXML2.serverXMLHTTP”)
XMLHTTP.Open “GET”, url, False
XMLHTTP.setRequestHeader “Content-Type”, “text/xml”
XMLHTTP.setRequestHeader “User-Agent”, “Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0”
XMLHTTP.send
Set html = CreateObject(“htmlfile”)
html.body.innerHTML = XMLHTTP.ResponseText
Set objResultDiv = html.getelementbyid(“rso”)
Set objH = objResultDiv.getelementsbytagname(“h3”)(0)
Cells(i, 2).Value = objH.innerText
Set html = CreateObject(“htmlfile”)
html.body.innerHTML = XMLHTTP.ResponseText
Set objResultDiv = html.getelementbyid(“rso”)
Set objH = objResultDiv.getelementsbytagname(“cite”)(0)
Cells(i, 3).Value = objH.innerText
DoEvents
Next
End Sub
九州编程
相关分类