はじめに
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