はじめに
ExcelVBAで簡易スクレイピングをしてみたい。
そんな場面もあるのではないでしょうか。
システム運用をされている方であれば、画面表示チェックで特定文字列が表示されてたらOKとしたい等運用改善を考えるかもしれません。
また、市役所の追加保育の募集が特定の文字列で表示されるから、それを検知したいという母エンジニアもいるはず。
今回のコードは第一引数にURL、第二引数にチェックしたい文字列を与えれば、TrueFalseで結果を返してくれるものです。
コード
Sub test()
MsgBox (readPageBodyInStr("https://www.google.co.jp/", "I'm Feeling Lucky"))
End Sub
Function readPageBodyInStr(url As String, checkStr As String) As Boolean
Dim http As Object
Dim buf As String
Dim result As Boolean
Set http = CreateObject("MSXML2.XMLHTTP")
'第一引数で指定した、URLを開く
http.Open "GET", url, False
http.Send
'URLの内容をUnicodeで取得
buf = StrConv(http.ResponseBody, vbUnicode)
'ダウンロード待ち
Do While http.readyState <> 4
Loop
'取得したページに指定文字列が含まれているかチェック
If InStr(buf, checkStr) > 0 Then
'含まれていた場合の処理
result = True
Else
'含まれていない場合の処理
result = False
End If
Set http = Nothing
readPageBodyInStr = result
End Function