Webシステムの双方向連携で知らないと損するスクレイピングライブラリ/ツール8選&主な使い方Webスクレイピングで始める業務システムのモバイル化(3)

既存Webシステムをモバイル化するに当たっての課題を明確にし、それらを解決するためには何が必要なのかを考えていく本連載。今回は、実際にスクレイピング技術を用いて既存Webシステムからデータを抽出する実例をツールを題材にしながら説明します。

» 2015年06月17日 05時00分 公開
[松木健太郎日本ネクサウェブ]
「Webスクレイピングで始める業務システムのモバイル化」のインデックス

連載目次

 前回の「モバイル化におけるWebスクレイピング技術活用の利点と注意点」では、Webスクレイピング技術を用いた際のメリット・デメリットと、使用時の注意点について説明しました。

 今回は、実際にWebスクレイピング技術を用いて既存Webシステムからデータを抽出する実例をいくつかのツールを題材にしながら説明します。

ユーザーオペレーション再現のために必要な双方向連携

 既存WebシステムをWebスクレイピング技術によってラッピングしてモバイル化する場合、既存システムの内容によって双方向連携が必要になります。これは、単純にURLを指定して情報を抽出するだけではなく、さまざまな情報を取得するために既存Webシステム側で行われていたユーザーオペレーションを再現させるためです。

 具体的には、以下のような処理フローをWebスクレイピング側で処理することを意味します。

図1 処理フロー例

 さらに、既存Webシステムと連携する入力データは固定ではなく、モバイルのUI側で入力されたデータと連携しなければなりません。

図2 モバイル連携フロー

 このようなモバイルUIと既存Webシステムの連携を実現するためには双方向連携が可能なWebスクレイピングライブラリ/ツールを使用する必要があります。

代表的なスクレイピングライブラリ/ツール

 モバイルUIと既存Webシステムの双方向連携を行うためには、何らかのプログラミングが必要になりますので、代表的なプログラム言語で利用できるWebスクレイピングライブラリ/ツールを以下に列挙します。

プログラム言語 ライブラリ
Java jsoup
.NET Html Agility Pack
PHP PHP Simple HTML DOM Parser
JavaScript CasperJS
Python Scrapy
Ruby Nokogiri

 その他、プログラム言語で使用するライブラリではなく、サービスや専用ツールとして提供されているものもあります。

種類 ツール・サービス名
サービス kimono
専用ツール・サービス XGEN-WEB

 「XGEN-WEB」は日本ネクサウェブが提供する既存Webシステムをラッピングして再利用するための専用のツール・サービスです。

 これらのライブラリ/ツールは、HTTPクライアントの機能を持っており、URLを指定してHTMLデータを取得することが可能です。例えば、Javaのjsoupであれば以下のようなコードによってHTMLデータの取得が可能です。

Document doc = Jsoup.connect("http://example.com/").get();

 上記の結果、「doc」には「http://example.com/」のHTMLデータが格納されます。

 ライブラリ/ツールによって使い方に若干の違いはありますが、基本的にはURLを指定するだけで簡単にHTMLデータを取得できます。また、必要であればURLにパラメーターなどを付加した状態でリクエストすることも可能です。

 取得後のHTMLデータからのデータ抽出は、以下のようにIDやCSSセレクターなどを使用して抽出します。

// タグのIDをキーに取得。id=”content”を保持するエレメントを取得する
Element content = doc.getElementById("content");
// タグ名をキーに取得。<a/> タグのエレメント全てを取得
Elements links = doc.getElementsByTag("a");
// CSSセレクターによる取得。 <img/>タグのsrc属性の属性値の末尾が”.png”のエレメントを全て取得する
Elements pngs = doc.select("img[src$=.png]");

 HTMLデータからのデータ抽出方法はライブラリ/ツールによって異なっており、IDやCSSセレクターを用いる手段の他、XPath正規表現を用いる手段などがあります。

 抽出したデータは各プログラム言語の中で加工し、プログラム言語による実装によって双方向連携を実現します。

Webスクレイピング活用のポイント

 さて、スクレイピングライブラリ/ツールを用いることで、既存Webシステムからのデータ抽出と、プログラムによるユーザーオペレーションの再現、双方向連携が可能である点は理解できたと思います。では、スクレイピングライブラリ/ツールを用いた際のリクエストURLはどうするのでしょうか?

 実は、この部分が既存Webシステムをスクレイピング技術によってラッピングする非常に重要なポイントです。

 一般的なWebページからデータを抽出する場合、単一のページ・固定のパラメーターを使用することが多いのですが、システム連携を行う場合、複数ページのURL、動的なパラメーターを使用したやりとりが必要です。場合によってはセッションの認証情報も必要になるかもしれません。

 通常、スクレイピングライブラリ/ツールは、データの抽出技術に特化しているため、システム連携のためのURLやパラメーターなどの情報は別途必要になります。

 これらのURL、パラメーターなどの連係情報の解析にはいくつかの手段があります。

既存システムの仕様から解析する

 連携対象となる既存システムが自社システムであった場合、そのシステムの仕様書などから連係情報を取得可能な場合があります。

 ただし、仕様書が最新のシステムの状況に即していない場合や、仕様を得られるほどの連携が行えない場合もあります。

Webブラウザーの開発ツールを使用する

 Internet ExplorerやFirefox、Chromeなどのメジャーブラウザーは開発者ツールを用いて、通信内容をモニタリングすることが可能です。実際の既存システムのオペレーションを開発者ツールが有効な状態で再現することで、リクエストURLやパラメーター情報を把握することが可能です。

図3 Internet Explorerの開発者ツール

 同様の通信内容の把握は、SeleniumJMeterなどのテスト系ツールでも取得可能です。

専用ツールを用いる

 Webスクレイピングの専用ツール・サービスの中にはユーザーオペレーションの記録から、連係情報の収集までを一元開発することが可能なツールが提供されている場合があります。

図4 XGEN-WEBの開発ツール画面

 例えば、XGEN-WEBでは「X-POP Developer」と呼ばれる専用の開発ツールが提供されており、通信内容をトレースするためのWeb Tracerや、トレース情報を元に情報抽出を行うための各種ツール、ユーザーオペレーション再現のためのプログラミングツールが統合的に提供されています。

次回は、抽出されたデータをどのようにモバイル化していくのか

 実際、Webスクレイピング技術を用いて既存Webシステムをラッピングする場合、この連携情報の解析・取得が最も負担の大きな作業になります。使い慣れたツールや、効率の良いツールを用いて連係情報の解析・取得がWebスクレイピング活用のポイントです。

 次回は、スクレイピング技術によって抽出されたデータをどのようにモバイル化していくのか、将来的に既存Webシステムをどのようにリニューアルすべきか、段階的なリニューアルを実現するためのアーキテクチャとモバイル化の手法について説明します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。