最近の投稿

スポンサーリンク

ExcelVBA

コピペで使えるExcelVBA:簡易スクレイピングでWebページを読み込んで特定文字列があるかチェックしたい

はじめに

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

最近の投稿

スポンサーリンク

-ExcelVBA
-

© 2024 ONE HUMAN UNIT Powered by AFFINGER5