適材適所

システム屋のくらげが気ままに書いているブログです。PowerShellやVBAなどプログラミング系の話をメインに書いています。

MENU

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

この記事では

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

WinHTTPでスクレイピングするシリーズ

VBAでスクレイピングをするシリーズです。

IEによるスクレイピングシリーズ↓

www.tekizai.net

今回はWinHTTPを使ったスクレイピングについて紹介したいと思います。

WinHTTPを使ったスクレイピングは、Internet Explorerを使ったスクレイピングとは一味違い、HTTPを理解する必要があります。

今回はIEによるスクレイピングとWinHTTPによるスクレイピングの違いについて簡単に触れたいと思います。

そんなの知っているよ!!御託はいいんだよ!という人はこちら↓

www.tekizai.net

WinHTTPとは

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

VBAから呼び出すことで、簡単に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とプログラムの同期がうまくとれずに異常終了が頻発することになります。

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

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

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

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

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

終わりに

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

IEによるスクレイピングは直観的でわかりやすいですが、不安定。対してWinHTTPは敷居は高いが自由度も高い・・・。

どちらを使うかは、ケースバイケースで環境に応じて使い分けられるといいですね!

WinHTTPを使った実践的なスクレイピングについてもまとめていますのでよかったらご覧ください!

www.tekizai.net

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