
VBAでHTTP通信
seleniumを使用しない
VBAでスクレイピングをしようとするとIEを使用するのが簡単で初学者にもわかりやすいが、2022年のIEサポート終了に伴って、chromeやedgeで作り直す必要が出てきた。
ただし、chromeやedge経由でやろうとすると、seleniumをインストールする必要があり、職場でのインストール権限の問題から断念することもあると思う。
今回はseleniumをインストールせずに、HTTP通信でスクレイピングする一例を紹介する。
VBAを使用してHTTP通信を行うには、WinHTTPライブラリを使用することができます。WinHTTPはWindowsに組み込まれており、HTTPリクエストを送信し、レスポンスを受信することができます。
以下は、VBAでWinHTTPを使用してHTTP GETリクエストを送信し、レスポンスを受信する例。
Sub GetHTTP()
Dim httpRequest As Object
Dim httpResponse As String
'WinHTTPオブジェクトを作成します
Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
'HTTP GETリクエストを送信するURLを指定します
httpRequest.Open "GET", "https://www.example.com", False
'HTTPリクエストを送信し、レスポンスを取得します
httpRequest.Send
httpResponse = httpRequest.responseText
'レスポンスを表示します
MsgBox httpResponse
End Sub
WinHTTPがインストールされていない場合は、以下の手順に従ってインストールすることができます。
ファイルエクスプローラーで「C:\Windows\System32」フォルダを開く
「winhttp.dll」というファイルを右クリックし、「プロパティ」→「バージョン」タブをクリックし、バージョン情報を確認する。
バージョン6.0以上のWinHTTPがインストールされていない場合は、Microsoftから要ダウンロード
ログイン承認が必要なサイトからzipファイルをダウンロードする
DownloadFileBasicAuthに以下引数を与えることでZipファイルを保存する。
引数1:ダウンロードするURL
引数2:Zipファイルを保存する場所
引数3:認証用ID
引数4:認証用パスワード
なお、DownloadFileBasicAuth内に変数「AuthUrl」があるが、こちらにはパスワード認証用のURLを設定する。
ここから先は
¥ 500
この記事が気に入ったらチップで応援してみませんか?