【VBA】Webスクレイピング-04:[開発]データを取得する

VBAで実践するWeb操作 VBA

VBAでWEBスクレイピングの第4弾です。

前回記事はこちら

Webスクレイピングによるデータの取得、今回はいよいよ開発に入ります。

前回のおさらい

前回は1番~3番の「設計」工程について説明しました。
今回は4番の「開発」工程を進めていきます。

全体の流れ
  1. [設計]取得したいデータを決める
    ⇒ 「価格」を取得する
  1. [設計]取得したいデータが、HTMLのどこにあるか確認する
    ⇒ Chrome「開発者ツール」で確認
  1. [設計]取得したいデータを、どのように取るか検討する
    ⇒ タグの「id=priceblock_ourprice」を使う
  1. [開発]プログラムを作成し、データを取得する
    ⇒ 今回の記事で説明

ソースコード

実際に動作するソースコードは以下の通りです。

Option Explicit

Function getPrice(url As String)
    
    '■1.前処理
    'IEのオブジェクトを作成
    Dim ie As InternetExplorer
    Set ie = New InternetExplorer
    
    'IEが開かないように設定
    ie.Visible = False


    '■2.本処理
    '指定のURLを開く
    ie.Navigate (url)
    
    'ページの読み込みが完了するまで待つ
    Do While ie.readyState <> READYSTATE_COMPLETE
        'OSに制御を戻す
        DoEvents
    Loop
             
    '価格を取得する
    Dim price As String
    price = ie.Document.getElementById("priceblock_ourprice").innerText
    
      
    '■3.後処理
    ie.Quit
    Set ie = Nothing
            
    getPrice = price

End Function

この中で、データを取得しているのは以下の1行です。

price = ie.Document.getElementById("priceblock_ourprice").innerText

この1行が何をしているのかを説明していきましょう。

  1. ie
    Webページを取得するためのアプリケーション(IE)です。
  1. Document
    IEで取得したWebページです。
  1. getElementById(“priceblock_ourprice”)
    Webページから、「id=”priceblock_ourprice”を持つ要素(Element)」を取得しています。
  1. innerText
    取得した要素(Element)の「内部テキスト(innerText)」を取得しています。

「IE⇒Webページ⇒要素⇒内部テキスト」と、徐々に絞り込まれていくイメージです。

他のWebサイトもスクレイピングできる

Webスクレイピングの基本的な流れは以上となります。
「データの取得方法」を変えることで様々なデータを取得できるようになります。

次回は「データの取得方法」について、他にどのような方法があるのかを説明していきます。

コメント

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