Vba 如何从excel单元格内容中搜索谷歌图像并返回url?
是否可以编写一个宏或vba,用于图像搜索a行中的单元格内容并返回图像的url?我能够返回过去的第一个结果或第一个搜索结果,但我不知道如何制作一个能够返回相关图像的结果,例如: 任何帮助都将不胜感激,因为我想我已经用尽了搜索功能 多谢各位 下面是我使用的代码,它不能按预期工作Vba 如何从excel单元格内容中搜索谷歌图像并返回url?,vba,excel,Vba,Excel,是否可以编写一个宏或vba,用于图像搜索a行中的单元格内容并返回图像的url?我能够返回过去的第一个结果或第一个搜索结果,但我不知道如何制作一个能够返回相关图像的结果,例如: 任何帮助都将不胜感激,因为我想我已经用尽了搜索功能 多谢各位 下面是我使用的代码,它不能按预期工作 Sub XMLHTTP() Dim url As String, lastRow As Long Dim XMLHTTP As Object, html As Object, objResultDiv As Objec
Sub XMLHTTP()
Dim url As String, lastRow As Long
Dim XMLHTTP As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object
Dim start_time As Date
Dim end_time As Date
lastRow = Range("A" & Rows.Count).End(xlUp).Row
Dim cookie As String
Dim result_cookie As String
start_time = Time
Debug.Print "start_time:" & start_time
For i = 2 To lastRow
url = "https://www.google.co.in/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 objH3 = objResultDiv.getelementsbytagname("H3")(0)
Set link = objH3.getelementsbytagname("a")(0)
str_text = Replace(link.innerHTML, "<EM>", "")
str_text = Replace(str_text, "</EM>", "")
Cells(i, 2) = str_text
Cells(i, 3) = link.href
DoEvents
Next
end_time = Time
Debug.Print "end_time:" & end_time
Debug.Print "done" & "Time taken : " & DateDiff("n", start_time, end_time)
MsgBox "done" & "Time taken : " & DateDiff("n", start_time, end_time)
End Sub
问题是,每次搜索都会将您带到不同的域,使用完全不同的HTML结构 没有可靠的方法可以做到这一点并带来正确的图片,因为您不可能事先知道返回的HTML的结构,您需要为图像解析该结构。。。当然,您可以尝试返回,例如,每个页面上的第一个图像,但是由于页面可能包含许多与您的搜索无关的图像,因此这将不是非常可靠 另一种方法是,按照您当前的操作获取str_文本和指向电子表格B列和C列的link.href,然后对以下结构的URL运行第二个XMLHTTP请求:
url = "https://www.google.co.in/search?q=" & Cells(i, 1) & "&source=lnms&tbm=isch&sa=X" & "&rnd=" & WorksheetFunction.RandBetween(1, 10000)
这将返回一个谷歌图像搜索。同样,这并不完美,因为应用程序无法知道返回的最佳图片是哪张,但您可以更可靠地返回第一张图片,因为这些结果可能与您的搜索词更相关。是的,这是可能的。到目前为止,您尝试了什么?这段代码循环遍历a列中的文本字符串,对每个字符串执行google搜索,并将第一个结果的标题和url保存到b列和c列中相应的单元格中。它不会让我在这里发布代码,因为它太长了,但我很难实现,仍然没有做我需要它做。请考虑张贴你的代码。如果你要求别人为你重新发明轮子,你不太可能得到很多帮助。不要在评论中添加代码。修改您的问题以包含代码。这是不可能读到的评论。抱歉,希望这是正确的。非常感谢你澄清这一点,因为我已经工作了一段时间了。你的评论启发了我另一个思考过程。。。是否可以跳过谷歌搜索,转而从Gamestop搜索图像URL?游戏停止URL总是相同的,除了照片的实际名称,它总是产品的名称,因此它可能会删除HTML结构问题?如果您能给它提供正确的搜索查询,那么肯定是可能的,但是,如果您在A列中进行搜索,那么A列中列出的搜索查询似乎不会返回很多结果。