簡體   English   中英

如何從excel單元格內容谷歌圖像搜索並返回網址?

[英]How to google image search from excel cell content and return url?

是否可以編寫一個宏或 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

問題是每次搜索都會將您帶到具有完全不同HTML 結構的不同域。

沒有可靠的方法來執行此操作並引入正確的圖片,因為您不可能事先知道需要解析圖像的返回 HTML 的結構……當然,您可以嘗試返回,例如,每個頁面上的第一張圖片,但由於這些頁面可能包含許多與您的搜索無關的圖片,因此這不是很可靠。

一種替代方法是執行您當前正在執行的操作以獲取電子表格 B 列和 C 列的str_textlink.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)

這將返回 Google 圖片搜索。 同樣,這不會是完美的,因為應用程序無法知道哪張是“最佳”圖片要返回,但您可以更可靠地返回第一張圖片,因為這些結果更可能與您的搜索詞相關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM