スポンサーリンク

【応用編・動画あり】VBAでYAHOOの検索補助を抜き出してみた~VBA(マクロ)でIE操作

IE関係
StockSnapによるPixabayからの画像
この記事は約5分で読めます。
スポンサーリンク

VBAでYAHOOの検索補助を抜き出してみた

みんなどんなものを検索しているのかなーと検索できる方法はないかな?と思ったときに、
YAHOOのキーワード入力補助が役立つのではないかと思いVBAで抜き出してみました!
↓(赤で囲った場所です!)

要素の抜き出し方が難しい。。

VBAのコードは、
①サイトを立ち上げて
②検索ボックスに値を入れて、
入力補助の要素のinnerTEXTを書き出す。
という内容なのですが、
③の有力補助のinnerTextをに抜き出すのが、ちょっと難儀しましたので、説明していきます。

入力補助の要素を検索

まずはYAHOOに行って、入力補助を表示させます。
その状態で、「F12」を押し開発者ツールを起動させます。
ctrl+Bで要素の検索をして、入力補助をクリックします。
すると、ID「srchAssistLists」の中に検索候補が含まれていることが分かりました。
そして、その中身はリンクの<a>で挟まれていることが分かりましたので、
.getElementbyid(“srchAssistLists”).getElementsbytagname(“A”)(0).INNERTEXT
で順に抜き出していけば書き出せることが分かりました。

ということで、↓のようなコードを下記実行しました!

Sub IEoutputyahoo()

Application.ScreenUpdating = False
Dim objIE As Object
Set objIE = GetObject("", "InternetExplorer.Application")
objIE.Visible = True
     
    objIE.Navigate "https://www.yahoo.co.jp/"  ' このURLを任意に変更
     
    ' ページの表示完了待ち。
    While objIE.ReadyState <> 4 Or objIE.Busy = True
        DoEvents
    Wend

    Dim objTABLE As Object
    Set objTABLE = objIE.document
     
    On Error Resume Next '結構エラーが伴うのでつけとく

    Dim A As Object
    
    For i = 2 To 73
    
    objIE.document.getElementbyid("srchfield").Value = Cells(i, 2)
    objIE.document.getElementbyid("srchfield").Select
    SendKeys "{BS}"
    SendKeys Cells(i, 2)

    Application.Wait Now() + TimeValue("00:00:01")

    
Cells(i, 4).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(0).INNERTEXT
Cells(i, 5).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(1).INNERTEXT
Cells(i, 6).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(2).INNERTEXT
Cells(i, 7).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(3).INNERTEXT
Cells(i, 8).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(4).INNERTEXT
Cells(i, 9).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(5).INNERTEXT
Cells(i, 10).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(7).INNERTEXT
Cells(i, 11).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(8).INNERTEXT
Cells(i, 12).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(9).INNERTEXT
Cells(i, 13).Value = objIE.document.getElementbyid("srchAssistLists").getElementsbytagname("A")(10).INNERTEXT
            
        ' ページの表示完了待ち。
    While objIE.ReadyState <> 4 Or objIE.Busy = True
        DoEvents
    Wend

    Next

 Application.ScreenUpdating = True

End Sub

上記のプログラムを実行すると2列目に入っている文字をどんどん入力し、
キーワードの候補を抜きだしてくれます。

↓結果は下記の通り、エクセルに書き出されました!
 かなり楽ちんでした。。。

記事のまとめ

この記事のまとめは下記のとおりです。

・無理やりにでもとっかかりになる候補を探せ!!笑
・番号は(0)から始まるので注意すること!

コメント欄

タイトルとURLをコピーしました