テーブル要素から データを抜き出したい
Excel VBAでIE自動操作の場合、For EachでLoopさせてタグを解析して取得する方法がメインでした。
SeleniumBasicでも同様にLoopさせてテーブルデータを取得可能ですが、もっと簡単に取得が出来ます。
AsTableを使用して、テーブルデータを抜き出すサンプルコード
トヨタ自動車株式会社(証券コード7203)の時系列の株価を取得します。
Public Sub sample()
'■chrome かEdgeどちらかを選択。
driver.Start "chrome"
' driver.Start "edge"
'■トヨタの株価にアクセス
driver.Get "https://info.finance.yahoo.co.jp/history/?code=7203.T"
'■th/tdのデータを二次元配列として取得
Dim arr As Variant
arr = driver.FindElementsByTag("table")(1).AsTable.Data
'■th/tdのデータをExcelに貼付(Sheet1のセルA1を起点に書込)※シートが存在しない場合はエラーになります
driver.FindElementsByTag("table")(1).AsTable.ToExcel [Sheet1!A1]
End Sub
注意点
- 上記コードはあくまでもテキストデータとして抜き出すだけです。
- その為、リンクURLやouterHTMLなどから情報が必要な場合は、今まで通りForEachでLoopさせます。
SeleniumBasicについて
Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。
但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。
コメント