テーブル要素から データを抜き出したい
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でのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。
コメント