【VBA】楽天ランキングページをWebスクレイピング②

VBAで実践するWeb操作 VBA

今回から、具体的な手順の説明に入ります。

  1. 楽天ランキングページ(https://ranking.rakuten.co.jp/weekly/)にアクセスし、「ページ全体」を取得する。
  2. 「ページ全体」から、ランキングに掲載されている「商品」を1件ずつ取得する。
  3. 「商品」から、「値」(商品名、価格、URL)を取得する。
  4. 「値」を書きだす。
  5. 2~4を商品の数だけ繰り返す。
前回記事はこちら

ページ全体を取得する

この部分は、URLにランキングページを指定したこと以外は、前回と同じなので説明を割愛します。

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


    '■2.本処理
    '指定のURLを開く
    ie.Navigate ("https://ranking.rakuten.co.jp/weekly/")
        
    'ページの読み込みが完了するまで待つ
    Do While ie.readyState <> READYSTATE_COMPLETE
        'OSに制御を戻す
        DoEvents
    Loop

「ページ全体」から、ランキングに掲載されている「商品」を1件ずつ取得する。

「商品」が取得したページのどの部分になるか、HTMLを見ながら検討してみましょう。
HTMLの確認には「Google開発者ツール」で確認します。

「Google開発者ツール」を使ったHTMLの確認手順

  1. ブラウザ(Chrome)上で「F12」キーをクリックし、ツールを起動します。
  2. 図の「矢印ボタン」を選択します。
  3. Webページの該当箇所を選択できるようになるので、商品を1件選択します。
  4. 「Elements」ペインに、Webページの選択した箇所に対応したHTMLが選択されます。

ランキングページの該当箇所を選択すると、「rnkRanking_top3box」というクラス名のタグが出てきます。
名前から見ても、このタグが商品1件に対応するタグのようです。

このクラス名をキーに、HTMLを取得してみます。
クラス名から取得するには「getElementsByClassName」を使用します。


    Dim products As Object
    Dim product As Object
    Dim name As String
    Dim price As String
    Dim url As String
    Dim rank As Integer
    rank = 1
    
    Set products = ie.Document.getElementsByClassName("rnkRanking_top3box")
    

ブレークポイントで「products」オブジェクトの内容を確認すると、「Item1」~「Item3」の3件が取得できていることが分かります。ランキング1位~3位の商品が取得できたようです。

次回の予定

次回は、取得した商品から「値」を抽出していきます。

コメント

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