如何从Excel单元格内容中搜索Google图片并返回URL?

问题描述 投票:0回答:2

是否可以编写一个宏或vba来对图像进行图像搜索,以查找A行中的单元格内容并返回图像的url?我已经能够返回过去的第一个结果或第一个搜索结果,但是我不知道如何制作一个将返回相关图像的图像,例如:

http://www.gamexchange.co.uk/images/pictures/products/ps3/littlebigplanet-3-ps3-(product-photography).jpg?v=b13dfc3644d28cd2cff7d5729a35fc5e

任何帮助,我们都应该感谢,因为我认为我现在已经用尽了搜索功能。

谢谢。

“”

这是我使用的无法正常工作的代码。

 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
excel vba excel-vba
2个回答
0
投票

问题是,每次搜索都将带您进入具有[[完全不同]] HTML结构的其他域。 没有可靠的方法来执行此操作并引入

正确

图片,因为您可能无法提前知道返回的HTML的结构,您需要对该HTML进行解析。当然,您可以尝试例如返回每页上的first图像,但是由于这些页面可能包含与您的搜索无关的many图像,因此不太可靠。一种替代方法是执行当前正在执行的操作,以获取电子表格的B和C列的str_textlink.href,然后对以下URL进行

second

XMLHTTP请求结构:
url = "https://www.google.co.in/search?q=" & Cells(i, 1) & "&source=lnms&tbm=isch&sa=X" & "&rnd=" & WorksheetFunction.RandBetween(1, 10000)

这将返回Google图片搜索。同样,由于应用程序无法知道要返回的“最佳”图片,因此这并不是完美的选择,但是您可以更可靠地返回

first

图片,因为这些结果更可能与您的搜索字词相关。

0
投票
所以5年过去了,我正面临着完全相同的问题。currenlty我正在尝试为Google图像页面创建一个列(针对每个句柄)。然后,我正计划使用Python代码来播放第一个图像。
© www.soinside.com 2019 - 2024. All rights reserved.