Selenium(Edge/Chrome)

Web上のテーブル要素(表)からデータを抜き出す【.AsTable】【ExcelVBA】【Selenium】

テーブル要素から データを抜き出したい

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でのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。

コメント

タイトルとURLをコピーしました