14 of 31 visible IE

Excel VBA +, 465 463 461 437 427 419 418 415 407 395 Bytes

Subroutine that takes input name of type string, searches for a glamour shot of that name on google images, navigates to that image and then outputs the image to the Sheets(1) object via the https://encrypted-tbn0.gstatic.com/images?q= - type link.

Must be run in a clean module.

NOTE: Uses References to

  • Microsoft HTML Object Library
  • Microsoft Internet Controls
  • Microsoft Scripting Runtime

Golfed:

Sub g(n)
Set i=New InternetExplorer
i.navigate "google.nl/search?tbm=isch&q="&Replace(n," ","+")&"+glamour+shot"
h i
Set d=i.document
Do Until InStr(1,l,"res")
j=j+1
l=d.getElementsByTagName("a")(j).href
Loop
i.navigate l
h i
Do Until InStr(1,l,"yp")
k=k+1
l=d.getElementsByTagName("img")(k).src
Loop
Sheets(1).Pictures.Insert l
i.quit
End Sub

Helper subroutine

Sub h(i)
While i.readyState<4
DoEvents
Wend
End Sub

-2 bytes for removing white space in If InStr(1, a.href, "imgres") Then

-2 bytes for changing .navigate (a.href) to .navigate a.href

-27 bytes for reducing for each a in ... if (...) then ... end if .. next loop to do until ... loop

-10 bytes for condensing imgres to res and encrypted to yp

-8 bytes for removing initalizers for j, k and assuming clean module

-1 byte for changing google.com to google.nl

-3 bytes for replacing Dim i as New ... with Set i=New ...

-8 bytes for removing SHDocVw. class reference

-12 bytes for removing with i block

Ungolfed

Option Private Module
Option Compare Text
Option Explicit
Option Base 0

Sub GlamourShot(ByVal name As String)

    Dim ie As New SHDocVw.InternetExplorer, _
        doc As MSHTML.HTMLDocument, _
        link As String, _
        j As Integer, _
        k As Integer

    With ie
        On Error GoTo CloseIE #'prevents memory leak

        Let .visible = True
        Call .navigate("www.google.com/search?tbm=isch&q=" & _
                    Replace(name, " ", "+") & _
                    "+glamour+shot")
        While .readyState <> READYSTATE_COMPLETE Or .Busy
            DoEvents
        Wend

        Set doc = .document

        Let j = 1
        Do Until InStr(1, link, "imgres") > 0
            Let link = doc.getElementsByTagName("a")(j).href
            Let j = j + 1
        Loop

        Call .navigate(link)
        While .readyState <> READYSTATE_COMPLETE Or .Busy
            DoEvents
        Wend

        Let k = 1
        Do Until InStr(1, link, "encrypted") > 0
            Let link = doc.getElementsByTagName("img")(k).src
            Let k = k + 1
        Loop

        With ThisWorkbook.ActiveSheet
            Call .Range("A1").Select
            Call .Pictures.Insert(link)
            Call .Activate
        End With
CloseIE:
        Call .Quit
    End With
End Sub

Very poor quality gif

Usage Gif