今回から、具体的な手順の説明に入ります。
- 楽天ランキングページ(https://ranking.rakuten.co.jp/weekly/)にアクセスし、「ページ全体」を取得する。
- 「ページ全体」から、ランキングに掲載されている「商品」を1件ずつ取得する。
- 「商品」から、「値」(商品名、価格、URL)を取得する。
- 「値」を書きだす。
- 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の確認手順
- ブラウザ(Chrome)上で「F12」キーをクリックし、ツールを起動します。
- 図の「矢印ボタン」を選択します。
- Webページの該当箇所を選択できるようになるので、商品を1件選択します。
- 「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位の商品が取得できたようです。
次回の予定
次回は、取得した商品から「値」を抽出していきます。
コメント