Selenium(Edge/Chrome)

Selenium「Web上のテーブル要素(表)からデータを抜き出す」【Edge/Chrome】

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

Excel VBAでEdge/Chromeを操作する際、Web上の表(テーブル要素)からデータを抜き出す処理も多いです。

■テーブル要素を抜き出したい
・メルカリから、落札相場のデータを取得したい
・ラクマから、出品データの動向を探りたい
・株価の値上がり率や値下がり率上位のデータを取得したい
・特定の株の時系列の株かを取得したい

テーブル要素から データを抜き出すサンプルコード

トヨタ自動車株式会社(証券コード7203)の時系列の株価を取得します。
サンプルでは時系列の一部しか取得しません。
aタグの次へボタンを押すことで、さらに過去のデータも取得可能です。

Public Sub sample()
    '■chrome かEdgeどちらかを選択。
    driver.Start "chrome"
'   driver.Start "edge"
 
    '■トヨタの株価にアクセス
    driver.Get "https://info.finance.yahoo.co.jp/history/?code=7203.T"
    
    Dim i As Long: i = 1
    Dim j As Long: j = 1
    
    '■テーブルデータを取得 trタグを取得
    For Each tr In driver.FindElementsByTag("tr")
        '■■thタグを取得(タイトル行)
        For Each th In tr.FindElementsByTag("th")
            Cells(i, j) = th.Attribute("innerText")
            j = j + 1
        Next th
        '■■tdタグを取得(データ行)
        For Each td In tr.FindElementsByTag("td")
            Cells(i, j) = td.Attribute("innerText")
            j = j + 1
        Next td
        '■■列(j)をリセットし、行(i)を+1する
        i = i + 1
        j = 1
    Next tr
End Sub

注意点

tr (Table Row)
表の横一行。trタグ内th要素td要素が存在。
th(Table Header)
表の見出しセル。thタグ内見出しテキストが存在。
td(Table Data)
表の値セル。tdタグ内のテキスト(もしくは数値)が存在。

SeleniumBasicについて

Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。

但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。

コメント

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