適材適所

WindowsやPowerShellやネットワーク、IBMなどのシステム系の話など気になったことも載せているブログです。

VBAによるスクレイピングの手法-WinHTTPとIEの違いについて

この記事では

  • VBAによるスクレイピングの中でも、IE(Internet Explorere)とWinHTTPを使ったスクレイピングの違いについて述べています。
  • IEを使ったスクレイピングについては知っているけど、WinHTTPを使ったスクレイピングはわからないという人に向けて書いています。

VBAによるスクレイピング

ブラウザでポチポチ作業をするのが面倒くさい、なんとか自動化できないか・・・。

そんな悩みを抱えている人が一度は考えるであろう、スクレイピング。

この記事ではWinHTTPとVBAを使ったスクレイピングについて紹介したいと思います。

WinHTTPを使ったスクレイピングは、ブラウザを操作するようなスクレイピングとは違い、HTTPというプロトコルについて理解する必要があります。

この記事ではIE(IE以外のブラウザも基本的な考え方は同じです。例えばSeleniumなどのツールを使ったスクレイピングなど)によるスクレイピングとWinHTTPによるスクレイピングの違いについて簡単に触れたいと思います。

そんなの知っているよ!!という人はこちら↓をご参照頂ければ幸いです。

www.tekizai.net

WinHTTPとは

Windowsの標準機能として備わっている、HTTP通信用のライブラリです。

VBAから呼び出すことで、簡単にHTTP通信を実現できます。

HTTP通信?何それ美味しいの?

いえいえ。

HTTPはインターネットを使ったことのある人なら知らず識らずに使っている技術です。

普段はブラウザを使ってインターネットへアクセスするかと思いますが、そのブラウザの中で使われているプロトコルがHTTPになります。

情報社会を支える超超重要情報技術の1つです。

HTTP通信はブラウザが内部的に行っていること

HTTP通信はブラウザが内部的に処理してくれているので普段、あまり意識することがありません。

しかしインターネットを使っている人はすべからくお世話になっています。

それはパソコンだろうがスマホだろうが関係なく、使われています。

さて、ブラウザとはウェブページを閲覧するためのアプリケーションです。

このブログもインターネット上にありますので、ウェブブラウザを通してみていらっしゃる方が大半だと思います。

Google Chrome、Microsoft Edge、FireFoxといった名前も聞きなれたものだと思います。

そもそもウェブブラウザは何を見るものなのでしょうか。

一番の基本としてウェブページ=HTMLという構造化されたテキストデータです。

HTMLとは、このようなテキストベースのものです。

<html>
 <head>
   ・・・
 </head>
 <body>
   ・・・
 </body>
</html>

パッ見ても意味がわからないかも知れませんが、このHTMLこそ、ウェブページの「骨格」と言えます。

こんな感じのテキストファイルが、「○○.html」という名前で誰かのコンピュータのどこかのフォルダの中に配置してあります。

ウェブブラウザは、URLを使ってこのHTMLにアクセスします。

ウェブサーバと呼ばれるコンピュータが、要求されたURLの情報に基づいて、HTMLを返します。

ウェブブラウザは、帰ってきたHTMLの情報に基づいてウェブ画面を組み立てて、私たちに見せてくれます。

つまり、ブラウザを通してウェブページにアクセスすることで、自分のパソコンから世界のどこかにあるコンピュータと通信ができるのです。

でも、自分のパソコンから、どこの誰とも知らないコンピュータにアクセスできるなんて変な話ですね。

どうしてそんなことが可能なのか。

それは、ちゃんとした決まりに則って通信の手順を踏んでいるからです。

その通信の手順こそが「HTTP」です。

前置きが長くなりましたが、ここで大事な点は、ウェブブラウザは、世界のどこかにあるHTMLにアクセスしており、そのアクセスするときの決まり事が、HTTPと呼ばれている、ということになります。

IEとWinHTTPのスクレイピングの違い

HTTPについてわかったところで、WinHTTPの話に戻ります。

WinHTTPは、HTMLへアクセスする際の通信の決まりごとを実行してくれる機能のことです。

WinHTTPによるスクレイピングとは、この機能を呼び出すことでウェブブラウザがやっていることをプログラム上でやろうということに他なりません。

ではVBAでよく使われるIEを使ったスクレイピングと比較してどんなメリット・デメリットがあるのか、次にまとめてみました。

手法 通信 速度 自由度 難易度 安定性
IE IEが行う ウェブページのレンダリングがあるため遅い
WinHTTP 作成者が行う ウェブサーバーとのファイルのやりとりだけなので速い 中~高

IEによるスクレイピングはHTTP通信に関する部分はIEが代行してくれるので敷居が低い分、画像のレンダリング等があるため低速であり、不安定な面があります。

対してHTTPの機能を直接呼び出すWinHTTPを使ったスクレイピングはHTTPの知識が要求され、敷居が高い分、処理が高速で安定性が高い点が特徴です。

IEによるスクレイピングのメリット・デメリット

IEによるスクレイピングは、通信関係はすべてIEがやってくれるので、作り手はHTMLの解析などに集中できます。

そのため難易度は比較的低めです。

その代わり、レンダリング処理があるため処理速度がどうしても遅くなります。

また、IEによるスクレイピングは動作が不安定になりがちです。画像のレンダリング速度などが通信環境やPCのスペックによって異なるため、個々の事情に合わせてスリープ処理などでチューニングする必要があります。

チューニングがうまくできていないと、IEとプログラムの同期がうまくとれずに異常終了が頻発することになります。

そして何より、IEをサポートしていたマイクロソフトは、IEのサポートを2022年6 月15 日で終了します。

ブラウザを使ったスクレイピングはブラウザに依存しているため、そのブラウザが無くなってしまう可能性があります。

WinHTTPによるスクレイピングメリット・デメリット

それに対してWinHTTPの場合、HTTPの通信を自分で行う必要があり、難易度はやや高めです。

ある程度HTTPというプロトコルの仕組みについて理解しておく必要があります。

その代わりIEによるスクレイピングは異なり、レンダリング処理(ページを組み立ててを映像として画面に出力すること)がないため高速で、不要なファイルのやりとりを省略できるなど、ある程度自由度は高くなります。

また、スリープ処理などの「ブラウザの処理を待つ」ようなことは不要ですので高い安定性を誇ります。

終わりに

IEとWinHTTPによるスクレイピングの違いについて考えてみました

IEによるスクレイピングは直観的でわかりやすいですが、不安定。

対してWinHTTPは敷居は高いが自由度も高い・・・。

どちらを使うかは、ケースバイケースで環境に応じて使い分ける、という考え方が一番いいかと思います。

↓こちらの記事では、具体的にWinHTTPを使ったスクレイピングのサンプルを紹介していますので、ご参照頂ければ幸いです。

www.tekizai.net

というわけで、ここまでお読みいただき、ありがとうございました。