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列目に入っている文字をどんどん入力し、
キーワードの候補を抜きだしてくれます。
↓結果は下記の通り、エクセルに書き出されました!
かなり楽ちんでした。。。
記事のまとめ
この記事のまとめは下記のとおりです。
その他、VBAでIEを動かすために必要な情報をまとめています!!
コメント欄