IEの要素のID,TagName,Nameを知る方法
特定したい要素の属性が分かれば、
getElementで取り出すことができることが分かりましたので、
要素の属性を確認方法を説明していきたいと思います。
右クリック→要素の検査
一番簡単なのが、知りたい要素の上で右クリック→要素の検査を使うことです。
YAHOOの検索ボックスを確認してみましょう。
検索ボックスの上で右クリックを押すと下記のように、要素の検査と出ると思います。
ここをクリックしてください。
すると、下図のような開発者ツールが起動し、
その要素がハイライトされた htmlコード表示されると思います。
ここを確認することで、要素の属性を知ることができます。
今回の場合、TagName="input"、name="p"、id="srchtxt"であることが分かりました。
↓↓動画で紹介しています。
また、開発者ツールは[F12]を押すことで立ち上げることができ、
この画面上で[ctrl+B]を押すことで要素の検索モードに入ることができます。
すると下図のように選択範囲がハイライトされ、その状態でクリックすることで、
先ほどと同じように、htmlの中身を見ることができます。
この結果検索ボタンはID="srchbtn"であることが分かりました。
↓↓動画で紹介しています。
知りたい要素がたくさんあるとき
上記の方法だとテキストボックスなどを検索することはできますが、
知りたい要素がたくさんあり、その情報をすべて抜き出すときには適しておりません。
今回その一例として、楽天証券の表の内容を書き出すプログラムを作成してみました。
楽天証券の表の内容を書き出す
楽天証券の表を書き出すためのコードになります。簡単に説明すると、
①サイトを立ち上げて
②tagName=”tr”を検索 (”tr”は「行」を表します。)
③.chirdrenを用いてtrの中の子要素の「列」を取得、書き出し。
※何個列があるかわからないので、とりあえず20まで取得。
エラーが起こらないようにOn Error Resume Next入れてます。
という内容です。
Application.ScreenUpdating = False
'IEの起動
Dim objIE As Object
Set objIE = GetObject("", "InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "https://www.rakuten-sec.co.jp/web/fund/find/search/result.html" ' このURLを任意に変更
' ページの表示完了待ち。
While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Wend
On Error Resume Next '値がないとエラーが出るので、エラー回避用
I = 1 '開始行を指定
L = 0
J = objIE.document.all.Length '要素の数を知る
Cells(I, 1).Value = "No"
Dim B As Object
For Each B In objIE.document.getElementsByTagName("tr")
For L = 0 To 20
Cells(I, L + 1) = B.Children(L).innertext
Next
I = I + 1
'ステータスバーに進捗を表示
Application.StatusBar = I & "/" & J
Next
On Error GoTo 0
Cells.WrapText = False
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
chirdrenに関しては別の記事でご紹介いたしますが、
上記のプログラムを実行すると楽天証券の下記の表を、
エクセルに書き出すことができたと思います。
このように大量のデータを抜き出したいときや、そのIDや名前などを探してられないときなどは、
for each構文を使って抜き出すといいと思います。
↓エクセルに書き出される
記事のまとめ
この記事のまとめは下記のとおりです。
また、要素を全て抜き出すためのコードも公開していますのでご覧ください↓
その他、VBAでIEを動かすために必要な情報をまとめています!!
コメント欄