ExcelVBAではid、Class、Nameなどさまざまな要素を取得してInternet Explorerの自動制御が可能ですが、
CSSセレクタを使用しても自動制御可能です。
CSSセレクタを使用してIEを自動操作
みんなの株式(みんかぶ)の日経平均/TOPIX/NYダウを例にしています。
Public Sub aaMain()
Dim objIE As Object
'■IE起動→該当ページへ遷移
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.navigate "https://minkabu.jp/"
Call Call_IE_WaitTime
Dim td As Variant
'■CSSセレクタを指定してデータを取得
For Each td In objIE.document.querySelectorAll("#layout > div:nth-child(4) > div.top-chart > div > div > table > tbody > tr > td")
Debug.Print td.innerText
Next td
'■下記のようなデータを取得します
'日経平均 (3 / 24)
'
'28,405.52
'
'-590.39(-2.04%)
End Sub
注意点
- CSSセレクタは、HTMLの要素を特定するためのパス情報です。
=仕様変更があるとVBAのコードが使えなくなる恐れがあります。 - querySelectorAllは要素を複数取得しますが、特定して取得したい場合は、querySelectorを使用します。
- querySelectorは指定された要素を一つだけ取得します。getElementByIdのイメージ。
- querySelectorAll指定された要素を全て取得します。getElementsByTagNameのイメージ。
CSSセレクタはどうやって取得する?
①Chrome→ Ctrl + Shift + I
②矢印マーク→指定したい要素をクリック。
③画面右側の開発ツールの該当要素を右クリック→Copy → copy selecter
その他
Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。
Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。



コメント