今回は、Webスクレイピングを使ってECサイトから価格を取得するサンプルを作成します。
タナイ
今回は、作成にあたり絶対に守ってほしい注意点も紹介します。
前回記事はこちら
Contents
※重要※Webスクレイピングにあたっての注意
WebスクレイピングでWebサイトから情報を取得する際には、利用規約を必ず確認してください。
利用目的やアクセス頻度によっては、Webサイトからアクセスを禁止されてしまう可能性があります。
- 利用目的
Webサイトに掲載されている情報の著作権は、基本的にはWebサイトが所有しています。Webサイトの情報を他社に販売する目的で取得することは禁止されているサイトが多いです。 - アクセス頻度
Webサイトは人が見ることを前提に作られています。プログラムを使い、人間には不可能なスピード(1秒間に100回、など)でアクセスすると、Webサイトのサーバーに大きな負荷がかかり、最悪の場合、停止してしまうこともあります。それを防ぐために、多くのサイトでは、プログラムでのアクセスまたは、高頻度のアクセスを禁止にしています。
Webスクレイピング:サンプルの利用目的
今回作成するサンプルは、利用規約に抵触しないよう、利用目的とアクセス頻度は以下の通り定義しています。
- 利用目的
ExcelVBAの学習のために使用します。取得したデータは二次利用しません。 - アクセス頻度
Webサイトへの負荷を抑えるため、1回の実行でアクセスするのは、1ページのみとします。
Webスクレイピング:サンプルコード
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
Webスクレイピング:サンプルの実行結果
AmazonでKindle Paperwhiteの価格を取得してみました。
※現在のサンプルプログラムは、商品の種類によってはエラーになる場合があります。
以下のページで価格を取得できることを確認しています。
Webスクレイピングに関係なくKindleはおすすめです
実行結果
Webスクレイピング:次回の記事
次回の記事では、プログラムの作り方について説明していきます。
コメント