VBAで価格コムの洗濯機ランキングをスクレイピング

SBMJOB

VBAでは結構昔からIE操作ができていましたが、とうとうIEのサポートが2022年中に終了してしまいます。現場では古いPCやOSが稼働していますのでこの辺りのIE操作をOfficeプリケーションでやってる部署あるんじゃないでしょうかね?と不安になりながらもIE操作のさわりだけコードを紹介いたします。

目次

スポンサーリンク

IEサポート終了まぢか

価格コムのランキング取得VBA

Option Compare Database
Option Explicit

Private Sub コマンド0_Click()
 Dim ieobj As InternetExplorer
 Set ieobj = New InternetExplorer
 ieobj.navigate ("https://kakaku.com/kaden/washing-machine/ranking_2110/hot/")
 ieobj.Visible = True
 'Webブラウザ読込が完了するまで待つ
 Call IEWait(ieobj)   'IEを待機
 Dim doc As HTMLDocument
 Set doc = ieobj.Document
 Dim el As IHTMLElement
 Dim detailel As IHTMLElement
 Dim rankingString As String
 '更新日を取得
 Debug.Print (doc.getElementsByClassName("notice alignR mTop5")(0).innerText)
 For Each el In doc.getElementsByClassName("rkgContents")(0).all
  If el.className = "num" Then
   rankingString = el.innerText & "位"
  End If
  If el.className = "rkgBoxNameMaker" Then
   rankingString = rankingString & " " & el.innerHTML
  End If
  If el.className = "rkgBoxNameItem" Then
   rankingString = rankingString & " " & el.innerHTML
  End If
  If el.className = "price" Then
   rankingString = rankingString & " " & el.innerText
   Debug.Print rankingString
  End If
 Next el
 Call WaitFor(3)
 ieobj.Quit
 Set ieobj = Nothing
End Sub

'応答が返ってくるまで待つfunction
Function IEWait(ByRef objIE As Object)
 Do While objIE.Busy = True Or objIE.ReadyState <> 4
  DoEvents
 Loop
End Function

'指定秒数待機するfunction
Function WaitFor(ByVal second As Integer)
 Dim futureTime As Date
 futureTime = DateAdd("s", second, Now)
 While Now < futureTime
  DoEvents
 Wend
End Function

スクレイピングって合法なの?

海外での訴訟事例ですがスクレイピング自体には違法性はないとの事。

国内ではどうなんでしょうか?スクレイピングで起訴された事例もありますが、データを抽出する事自体の違法性は低いようです。データ問い合わせの頻度によるサーバ負荷であったり第三者へのデータ提供や売買が問題になるケースはあるようです。また利用規約や著作権の問題もからんできますのでスクレイピング自体の合法性というよりもデータの取得方法や利用目的にそもそも問題があるという事でしょう。

もちろんスクレイピングは社内システムでも行われますのでその場合は企業内や関連企業間との取り決めが必要になってきます。例えば基幹システムのWeb化画面からスクレイピングでレポーティング用のデータを部門開発で取得したりと無駄なコストをかけている場合がありますしシステム負荷が問題になってきます。無駄ですが社内であれば合法でしょう。

IEサポート終了後のスクレイピング等どうする問題

pythonのweb操作用ライブラリの利用やselenium等の活用の場が広がってくると思われます。いやむしろ今でもpython広く使われてますね。

もちろんRPA系のツールでのシナリオ作成でも対応可能な範囲が大きいでしょう。

スポンサーリンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

システム開発SE・アプリ開発・デバッガー等々なんでもやる猫の下僕です。現在は凶暴猫にカタカタ動く手を狙われながらキーボードを打っています。かなりゆるい性格なのでコメントやメッセージお気軽に〜お仕事のご依頼もお気軽にぃ〜

スポンサーリンク

コメント

コメントする

CAPTCHA


目次