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系のツールでのシナリオ作成でも対応可能な範囲が大きいでしょう。
コメント