スクリーンスクレイピング

スクリーンスクレイピング（Screen scraping）とは、あるプログラムが人間に読みやすい形で出力した結果からデータを抽出する技術のこと。

概要
通常、プログラム間でのデータ転送にはコンピュータによる自動処理に適したデータ構造が用いられる。このようなデータ交換フォーマットやプロトコルは厳格に構造化、整形化されており、容易に解析できるようになっていて、曖昧さが最小になるように設計されている。この場合、通信内容は人間に読みやすい形でないことがほとんどである。

つまり、スクリーンスクレイピングにおいて重要なのは、スクレイピング対象の出力結果は他のプログラムへの入力ではなく、エンドユーザーへの表示を想定しているであろうこと、そして整形化も、解析のために構造化もされていないであろうということである。スクリーンスクレピングには、画像やマルチメディア等のバイナリデータ、画面フォーマット、冗長なラベルや注釈、その他自動処理に必要ない・有害な情報を取り除くことも含まれる。

スクリーンスクレイピングは主に次のようなケースで行われる。
 対象がレガシーシステムで、現在のハードウェアと互換性のあるメカニズムが他にない
 対象がサードパーティー製システムで、より利便性の高いAPIが提供されていない
2番目のケースでは、システムの負荷増加、広告収入の減少、コンテンツをコントロール下に置けない等の理由で、システムの管理者（サードパーティ）がスクレイピングを望まない可能性がある。

スクリーンスクレイピングは一般的に他に利用可能なメカニズムがない場合に用いられる、その場しのぎで、エレガントでない「最後の手段」と考えられている。多大なプログラミングと処理のオーバーヘッドに加え、出力が人間を対象としているために構造が頻繁に変更される。人間であれば変更に対して簡単に対処できるが、コンピュータプログラムでは大抵の場合クラッシュしたり、誤った結果を表示してしまう。

スクリーンスクレイピング
元来、スクリーンスクレイピングとはターミナルコンピュータの画面からテキストデータを読み込む作業を指していた。これは一般的には補助ポート経由でターミナルのメモリを読み込むことで、またはターミナルの出力ポートを別のコンピュータシステムの入力ポートに接続することで行われていた。また、スクリーンスクレイピングという用語はデータの双方向交換を指しても使われている。単純な例では、ユーザインタフェースを通じて制御プログラムを操作することもスクリーンスクレイピングである。制御プログラムは人間によって使用されるインタフェースによってデータ入力されているからである。

古典的なスクリーンスクレイピングの具体例としては、データ処理がコンピュータ化され始めた1960年代に構築されたシステムを考えてみると良い。当時のコンピュータのユーザインタフェースと言えば主に仮想テレタイプに過ぎない単なるテキストベースのダム端末であった。より近代的なシステムにこれを接続したいと思うのは別段特別なことではない。この時、堅牢な解決法を用いるならば、ソースコードやシステムドキュメント、API等（場合によっては当時の経験を持った50歳のコンピュータプログラマ）、現在容易に調達できないものが多数必要になってしまう。この場合の実行可能な解決法の一つは、ターミナルのユーザを「偽装」するスクリーンスクレイパーへ出力することである。スクリーンスクレイパーはTelnetを介してレガシーシステムに接続し、キーストロークをエミュレーションして古いユーザインタフェースを操作し、結果表示を処理して必要なデータを抽出したのち、近代的なシステムに渡す。

1980年代には、ロイターやテレレートおよびQuotron等の財務資料には人間の読者を対象とした24x80形式のデータが表示されていた。このデータのユーザ（特に投資銀行）は、取引の意思決定の計算に含めるための数値データを再入力する手間を省くため、文字データを数値データに取得・変換するアプリケーションを作成していた。この作業を指して、表示結果がシュレッダーを通過したように喩えて、特にイギリスにおいてページシュレッディング（page shredding）という語が使われていたことがある。さらにロイターの内部では、この変換作業をLogicizerと呼ばれるVAX/VMS上で動作するコンピュータシステムで行ったことから、ロジサイズド（logicized）という語を使っていたことがあるhttp://www.fxweek.com/fx-week/news/1539599/contributors-fret-about-reuters-plan-to-switch-from-monitor-network-to-idn, FX Week, 02 Nov 1990。

より近代的な技術では、画面からビットマップデータをキャプチャしOCRエンジンを介して処理すること、GUIアプリケーションの場合には、オブジェクトの参照を取得し、プログラムからグラフィカルコントロールを操作することもスクリーンスクレイピングに含まれる。

ウェブスクレイピング

Webページはテキストベースのマークアップ言語（HTMLおよびXHTML）を使用して構築されており、テキスト形式の有用なデータが豊富に含まれている。しかしほとんどのWebページは容易に自動処理するためではなく、人間のエンドユーザのために設計されている。このため、ウェブコンテンツをスクレイピングするツールキットが開発されている。Webサイトからデータを抽出するためのAPIはウェブスクレイパーと呼ばれている。

レポートマイニング

スクリーンスクレイピングやウェブスクレイピングは、動的な出力を対象としているが、レポートマイニングではHTML、PDF、テキスト等の人間に読めるフォーマットで出力されたファイルからのデータ抽出を目的とする。この出力ファイルはプリンターへのデータ送信をインターセプトすることでほとんどのシステムで生成することができる。このアプローチではデータ源のシステムへのAPIをプログラミングする必要がなく、データを得るための迅速かつ単純な手法となる。

脚注

関連項目
 インポータ
 ウェブスクレイピング
 マッシュアップ (Webプログラミング)
 レポートマイニング
 メタデータ
 アカウントアグリゲーション
 Octoparse

Category:データ処理