(57)【特許請求の範囲】
【請求項１】
特定のＵＲＬに対応付けられ、タグの構造情報を含む文書における抽出対象部分の前記文書に含まれるタグの階層構造上の位置を特定し、該階層構造上の位置を登録することを許容し、
定期的又は不定期に、前記特定のＵＲＬに対応付けられた前記文書にアクセスして、登録された前記タグの階層構造上の位置に対応するデータを抜き出して、出力し、
前記文書についての前記抽出対象部分の位置が複数登録され、未知の文書にアクセスした場合に、前記未知の文書について、取得済みの複数の前記位置に対応するデータと一致するデータの数又は率に応じた出力を行う、
処理をコンピュータに実行させることを特徴とするデータ取得プログラム。
【請求項２】
前記抽出対象部分の位置は更に、タグの名称又はタグの文書内における順と、前記タグの階層構造との組み合わせを用いて特定されることを特徴とする請求項１に記載のデータ取得プログラム。
【請求項３】
過去に抜き出した登録された前記タグの階層構造上の位置に対応するデータと、今回抜き出した登録された前記タグの階層構造上の位置に対応するデータとが異なる場合に、データが変化したことを示す情報を出力することを特徴とする請求項１に記載のデータ取得プログラム。
【請求項４】
前記文書についての前記抽出対象部分の位置が複数登録された場合に、複数の前記位置に対応するデータの内、過去のデータと一致するデータの数又は率に応じた出力を行うことを特徴とする請求項１に記載のデータ取得プログラム。
【請求項５】
ＨＴＭＬ形式で記述された前記文書又は該文書のソースを表示し、
表示された該文書又は該文書のソースに含まれる抽出対象部分の選択を受け付け、
受け付けた前記抽出対象部分に対応するタグの階層を特定し、
特定した該階層を前記抽出対象部分の位置を特定する情報として登録することを特徴とする請求項１に記載のデータ取得プログラム。
【請求項６】
特定のＵＲＬに対応付けられ、タグの構造情報を含む文書における抽出対象部分の選択を受け付け、受け付けた前記抽出対象部分に対応するタグの階層構造上の位置を特定し、
特定した前記タグの階層構造上の位置を記憶部に登録し、
定期的又は不定期に、前記特定のＵＲＬに対応付けられた前記文書にアクセスして、前記記憶部に登録された前記タグの階層構造上の位置に対応するデータを抜き出して、出力し、
前記文書についての前記タグの階層構造上の位置が複数登録され、未知の文書にアクセスした場合に、前記未知の文書について、取得済みの複数の前記位置に対応するデータと一致するデータの数又は率に応じた出力を行う、
処理をコンピュータが実行することを特徴とするデータ取得方法。
【請求項７】
特定のＵＲＬに対応付けられ、タグの構造情報を含む文書における抽出対象部分の前記文書に含まれるタグの階層構造上の位置を特定し、該階層構造上の位置を登録することを許容する登録部と、
定期的又は不定期に、前記特定のＵＲＬに対応付けられた前記文書にアクセスして、登録された前記タグの階層構造上の位置に対応するデータを抜き出して、出力する第１出力制御部と、
前記文書についての前記抽出対象部分の位置が複数登録され、未知の文書にアクセスした場合に、前記未知の文書について、取得済みの複数の前記位置に対応するデータと一致するデータの数又は率に応じた出力を行う第２出力制御部と、
を有することを特徴とするデータ取得装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ取得プログラム、データ取得方法及びデータ取得装置に関する。
【背景技術】
【０００２】
インターネット上に公開されている情報を収集するためのツールとして、クローラツールが知られている。クローラツールは、インターネット上のホームページを巡回して、ＵＲＬ（Uniform  Resource  Locator）単位、すなわちページ単位で内容を保存する。また、ホームページ等のコンテンツを解析してユーザの指定箇所を特定し、新たにコンテンツを受信した場合に、対応する指定箇所を抽出して元のデータと比較することで、一部分の更新の有無を検出することが提案されている。【０００３】
また、ウェブページ、つまりホームページから独立して処理が可能な部分である独立可能部分のタグ情報を抽出し、独立可能部分がユーザに指定されると、指定された独立可能部分の内容を含むページ部品を生成することが提案されている。さらに、生成したページ部品に基づいて、新たなウェブページを生成することが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２０２２８３号公報
【特許文献２】特開２００１−１０９７４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、例えば、インターネット上の様々なホームページから特定の情報を収集する場合には、受信したコンテンツや生成したページ部品に基づくウェブページを参照すると、収集の目的としない他の情報も含まれる場合がある。このため、特定の情報のみを収集して、汎用性の高いデータを出力することが困難である。【０００６】
一つの側面では、本発明は、固有のタグ情報がなくても対象部分のデータを抜き出して出力できるデータ取得プログラム、データ取得方法及びデータ取得装置を提供することにある。
【課題を解決するための手段】
【０００７】
一つの態様では、データ取得プログラムは、特定のＵＲＬに対応付けられ、タグの構造情報を含む文書における抽出対象部分の前記文書に含まれるタグの階層構造上の位置を特定し、該階層構造上の位置を登録することを許容する処理をコンピュータに実行させる。また、データ取得プログラムは、定期的又は不定期に、前記特定のＵＲＬに対応付けられた前記文書にアクセスして、登録された前記タグの階層構造上の位置に対応するデータを抜き出して、出力する処理をコンピュータに実行させる。
【発明の効果】
【０００８】
固有のタグ情報がなくても対象部分のデータを抜き出して出力できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、データ取得装置の構成の一例を示すブロック図である。
【図２】図２は、対象記憶部の一例を示す図である。
【図３】図３は、項目記憶部の一例を示す図である。
【図４】図４は、ページ記憶部の一例を示す図である。
【図５】図５は、抽出データ記憶部の一例を示す図である。
【図６】図６は、抽出対象部分の受付画面の一例を示す図である。
【図７】図７は、定義生成処理の一例を示すフローチャートである。
【図８】図８は、クロール処理の一例を示すフローチャートである。
【図９】図９は、データ取得プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて、本願の開示するデータ取得プログラム、データ取得方法及びデータ取得装置の実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例】
【００１１】
図１は、データ取得装置の構成の一例を示すブロック図である。図１に示すデータ取得装置１００は、例えば、ネットワークＮを介してインターネットに接続され、管理者に指定されたインターネット上のホームページ（以下、サイトともいう）を巡回し、所定のデータを取得してデータベースに蓄積する。データ取得装置１００は、例えば、ある地域の観光情報を取得するために、観光スポットのサイトや都道府県が設けた観光情報サイトを巡回して、各観光スポットの住所、電話番号、説明文等のデータを取得する。このとき、各観光スポットのサイトや観光情報サイトでは、各種データのフォーマットが統一されていない場合が多い。このため、データ取得装置１００は、取得するデータ項目の定義を予め生成し、定義に基づいて各サイトからデータを取得する。【００１２】
すなわち、データ取得装置１００は、特定のＵＲＬに対応付けられ、タグの構造情報を含む文書における抽出対象部分の文書に含まれるタグの階層構造上の位置を特定し、該階層構造上の位置を登録することを許容する。また、データ取得装置１００は、定期的又は不定期に、特定のＵＲＬに対応付けられた文書にアクセスして、登録されたタグの階層構造上の位置に対応するデータを抜き出して、出力する。これにより、データ取得装置１００は、各種データのフォーマットが異なるサイトの文書について、固有のタグ情報がなくても対象部分のデータを抜き出して出力できる。【００１３】
ここで、タグの構造情報を含む文書としては、例えば、マークアップ言語で記述された文書が挙げられ、例えばＨＴＭＬ（HyperText  Markup  Language）文書、ＸＭＬ（Extensible  Markup  Language）文書等が挙げられる。なお、以下の説明では、一例として、ＨＴＭＬ文書を用いたホームページを巡回する場合について説明する。【００１４】
次に、データ取得装置１００の構成について説明する。図１に示すように、データ取得装置１００は、入力部１０１と、出力部１０２と、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、データ取得装置１００は、図１に示す機能部以外にも既知のコンピュータが有する各種の機能部を有することとしてもかまわない。【００１５】
入力部１０１は、例えば、キーボードやマウス等の入力デバイスであり、データ取得装置１００の管理者から各種情報の入力を受け付ける。例えば、入力部１０１は、データ取得装置１００の管理者により、巡回するサイトのＵＲＬ、取得するデータ項目等が入力され、入力結果を制御部１３０に出力する。また、入力部１０１は、例えば、ＳＤ（Secure  Digital）メモリカード等のリーダライタであってもよい。入力部１０１は、例えば、ＳＤメモリカードから読み込んだ、巡回するサイトのＵＲＬ、取得するデータ項目等を制御部１３０に出力する。なお、入力部１０１は、入力デバイスとＳＤメモリカード等のリーダライタとの双方を有してもよい。【００１６】
出力部１０２は、例えば、各種情報を表示するための表示デバイスである。出力部１０２は、例えば、表示デバイスとして液晶ディスプレイ等によって実現される。また、出力部１０２は、ＳＤメモリカード等のリーダライタであってもよい。出力部１０２は、制御部１３０から出力データが入力されると、出力データについて表示又はメモリカードへの書き込みを行う。なお、入力部１０１及び出力部１０２は、一体化されてもよく、例えば、ＳＤメモリカード等のリーダライタのように、双方の機能を有するデバイスであってもよい。また、出力部１０２は、例えば、表示デバイスとＳＤカードリーダライタの双方を有してもよい。【００１７】
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。通信部１１０は、ネットワークＮを介して、例えばインターネットと有線又は無線で接続され、インターネット上の各種サイトのサーバとの間で情報の通信を司る通信インタフェースである。通信部１１０は、インターネット上の各種サイトからページ内容、例えば、ＨＴＭＬ文書、画像ファイル等を受信する。通信部１１０は、受信したページ内容を制御部１３０に出力する。また、通信部１１０は、制御部１３０から入力されたページ要求等をインターネット上の各種サイトに送信する。【００１８】
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２０は、対象記憶部１２１と、項目記憶部１２２と、ページ記憶部１２３と、抽出データ記憶部１２４とを有する。また、記憶部１２０は、制御部１３０での処理に用いる情報を記憶する。【００１９】
対象記憶部１２１は、データを取得するクロール処理の対象となるサイトのＵＲＬ（以下、対象ＵＲＬという）と、ＨＴＭＬ文書における抽出対象部分の位置特定情報とを対応付けて記憶する。すなわち、対象記憶部１２１は、対象ＵＲＬの定義を記憶する。図２は、対象記憶部の一例を示す図である。図２に示すように、対象記憶部１２１は、「ＵＲＬＩＤ」、「対象ＵＲＬ」、「抽出対象部分の位置特定情報」といった項目を有する。また、「抽出対象部分の位置特定情報」は、「タイトル」、「住所」といった項目を有する。なお、抽出対象部分の位置特定情報は、図示はしないが、他にも、電話番号、更新日、位置情報、説明文といった項目を有する。対象記憶部１２１は、例えば、１つの対象ＵＲＬごとに１レコードとして記憶する。【００２０】
「ＵＲＬＩＤ」は、対象ＵＲＬを識別する。「対象ＵＲＬ」は、クロール処理でアクセスする対象となるＨＴＭＬ文書のＵＲＬを示す。対象ＵＲＬは、例えば、管理者によって入力部１０１の入力デバイスにより入力される。「抽出対象部分の位置特定情報」は、対象ＵＲＬのＨＴＭＬ文書内における抽出対象部分の位置を特定するための情報を示す。「タイトル」は、対象となるＨＴＭＬ文書内のタイトルについて、タグの名称、タグの文書内における順番、及び、タグの階層構造のうち１つ以上を組み合わせて、タグの階層構造上の位置を示す。「住所」は、対象となるＨＴＭＬ文書内の住所について、タグの名称、タグの文書内における順番、及び、タグの階層構造のうち１つ以上を組み合わせて、タグの階層構造上の位置を示す。【００２１】
図２の１行目の例では、ＵＲＬＩＤが「１」の対象ＵＲＬ「http://aaaa.bbb.ccc/ddd/eee/001.html」のＨＴＭＬ文書内における、タイトル及び住所の位置特定情報を示す。タイトルの位置特定情報は、例えば、「<DIV  class="title">  </DIV>,順番：1,/title/」と表現される。「<DIV  class="title">  </DIV>」は、例えば、ＣＳＳ（Cascading  Style  Sheets）セレクタを用いて抽出したタイトルを示すタグの名称を示す。「順番：1」は、当該ＨＴＭＬ文書内のタイトルを示すタグのうち、１番目のタグを示す。「/title/」は、当該ＨＴＭＬ文書のタイトルを示すタグの階層構造を示す。なお、当該ＨＴＭＬ文書からタイトルとして抜き出されるデータは、ＤＩＶタグに囲まれた部分となる。【００２２】
同様に、住所の位置特定情報は、例えば、「<DIV  class="address">  </DIV>,順番：1,/info/address/」と表現される。「<DIV  class="address">  </DIV>」は、例えば、ＣＳＳセレクタを用いて抽出した住所を示すタグの名称を示す。「順番：1」は、当該ＨＴＭＬ文書内の住所を示すタグのうち、１番目のタグを示す。「/info/address/」は、当該ＨＴＭＬ文書の住所を示すタグの階層構造を示す。なお、当該ＨＴＭＬ文書から住所として抜き出されるデータは、ＤＩＶタグに囲まれた部分となる。また、抽出対象部分の位置特定情報は、タグの名称、タグの順番、及び、タグの階層構造のうち１つ以上を用いて特定してもよい。【００２３】
また、タグの名称は、正規表現を用いて表してもよい。図２の２行目の例では、住所を示すタグの名称を「/<DIV.*>(.+)</DIV>/  /住所：(.+)$/」と表現している。正規表現では、ＤＩＶタグに囲まれた箇所、又は、「住所：」の後ろに続く箇所が、住所として抜き出されるデータとなる。さらに、抽出対象部分の位置特定情報は、ＣＳＳセレクタと正規表現を組み合わせてもよい。【００２４】
また、図２の３行目の例のように、抽出対象部分の位置特定情報は、切り出し手法を用いて表現してもよい。この場合には、タイトルの位置特定情報は、例えば、ＣＳＳセレクタを用いて「div#left  h2,順番：3,/tps/table/」と表現される。また、住所の位置特定情報は、例えば、ＣＳＳセレクタと正規表現とを用いて「#infoContent  @<h3>所在地</h3>\s+?<p>(.+?)</p>@is,順番：5,/info/address/」と表現される。【００２５】
図１の説明に戻って、項目記憶部１２２は、対象ＵＲＬのページ内容から抽出するデータ項目の定義を記憶する。図３は、項目記憶部の一例を示す図である。図３に示すように、項目記憶部１２２は、「項目ＩＤ」、「データ名」、「データ型」、「切り出し手法」といった項目を有する。項目記憶部１２２は、例えば、１つのデータ名ごとに、１レコードとして記憶する。【００２６】
「項目ＩＤ」は、データ項目、すなわちデータ名を識別する。「データ名」は、抽出するデータの名前を示す。データ名は、例えば、タイトル、住所、電話番号、更新日、位置情報、説明文といったデータが挙げられる。「データ型」は、抽出したデータを抽出データ記憶部１２４に記憶する際の当該データの型を示す。データ型は、例えば、文字、数字、日付、緯度経度といった型が挙げられる。「切り出し手法」は、対象ＵＲＬのページ内容からデータを切り出す、つまり抜き出す手法を示す。切り出し手法は、例えば、ＣＳＳセレクタ、正規表現といった手法が挙げられる。【００２７】
図１の説明に戻って、ページ記憶部１２３は、対象ＵＲＬについて、クロール処理でアクセスして取得したページ内容、すなわち、ＨＴＭＬ文書、画像ファイル等を記憶する。図４は、ページ記憶部の一例を示す図である。図４に示すように、ページ記憶部１２３は、「ＵＲＬＩＤ」、「対象ＵＲＬ」、「記憶領域」といった項目を有する。ページ記憶部１２３は、例えば、１つの対象ＵＲＬごとに１レコードとして記憶する。【００２８】
「ＵＲＬＩＤ」は、対象ＵＲＬを識別する。「対象ＵＲＬ」は、クロール処理でアクセスしたＨＴＭＬ文書のＵＲＬを示す。「記憶領域」は、取得したＨＴＭＬ文書や画像ファイル等を記憶した記憶領域を示す。記憶領域は、例えば、記憶部１２０のファイルシステムのディレクトリを記憶し、対応するディレクトリにＨＴＭＬ文書や画像ファイル等を記憶する。なお、ページ記憶部１２３は、記憶領域に、取得したＨＴＭＬ文書や画像ファイルを直接記憶するようにしてもよい。【００２９】
図１の説明に戻って、抽出データ記憶部１２４は、ＨＴＭＬ文書から抽出された、抽出対象部分のデータを記憶する。すなわち、抽出データ記憶部１２４は、クロール処理によって収集されたデータを格納するデータベースである。図５は、抽出データ記憶部の一例を示す図である。図５に示すように、抽出データ記憶部１２４は、「ＵＲＬＩＤ」、「タイトル」、「住所」、「電話番号」、「更新日」、「位置情報」、「説明文」といった項目を有する。抽出データ記憶部１２４は、例えば、１つのＵＲＬＩＤごとに１レコードとして記憶する。【００３０】
「ＵＲＬＩＤ」は、対象ＵＲＬを識別する。「タイトル」は、対象ＵＲＬのＨＴＭＬ文書から抽出されたデータ項目の１つであり、対象ＵＲＬのＨＴＭＬ文書のタイトルを示す。「住所」は、対象ＵＲＬのＨＴＭＬ文書から抽出されたデータ項目の１つであり、対象ＵＲＬのＨＴＭＬ文書内に記載された住所を示す。「電話番号」は、対象ＵＲＬのＨＴＭＬ文書から抽出されたデータ項目の１つであり、対象ＵＲＬのＨＴＭＬ文書内に記載された電話番号を示す。「更新日」は、対象ＵＲＬのＨＴＭＬ文書から抽出されたデータ項目の１つであり、対象ＵＲＬのＨＴＭＬ文書内に記載された更新日を示す。「位置情報」は、緯度経度を示す。緯度経度は、対象ＵＲＬのＨＴＭＬ文書から抽出された住所に基づいて、例えば、外部のＡＰＩ（Application  Programming  Interface）サービスを利用することで取得される。なお、位置情報は、ＨＴＭＬ文書内に緯度経度の記載があれば、当該緯度経度であってもよい。「説明文」は、対象ＵＲＬのＨＴＭＬ文書から抽出されたデータ項目の１つであり、例えば、対象ＵＲＬのＨＴＭＬ文書が観光スポットに関する文書であれば、文書内の観光スポットに関する説明文を示す。なお、住所は、ＨＴＭＬ文書内に記載がない場合には、例えば、タイトルに記載された観光スポット名を用いて、外部のＡＰＩサービスを利用することで取得された住所であってもよい。【００３１】
図１の説明に戻って、制御部１３０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。制御部１３０は、登録部１３１と、クロール部１３２と、抽出部１３３と、出力制御部１３４とを有し、以下に説明する情報処理の機能や作用を実現又は実行する。なお、制御部１３０の内部構成は、図１に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。【００３２】
登録部１３１は、対象ＵＲＬの定義及びデータ項目の定義を登録する。登録部１３１は、例えば、管理者が入力部１０１を操作することにより、抽出対象部分とするデータ名、データ型及び切り出し手法の入力を受け付ける。登録部１３１は、受け付けたデータ名、データ型及び切り出し手法を対応付けて、データ項目の定義を生成する。登録部１３１は、生成したデータ項目の定義を項目記憶部１２２に記憶する。つまり、登録部１３１は、生成したデータ項目の定義を項目記憶部１２２に登録する。【００３３】
登録部１３１は、対象ＵＲＬに対応するＨＴＭＬ文書のソースを出力部１０２に出力して表示させる。登録部１３１は、例えば、管理者が入力部１０１を操作することにより、表示させた対象ＵＲＬに対応するＨＴＭＬ文書のソース上で、抽出対象部分の選択を受け付ける。なお、登録部１３１は、対象ＵＲＬのＨＴＭＬ文書を表示させて、ＨＴＭＬ文書上で抽出対象部分の選択を受け付けるようにしてもよい。【００３４】
登録部１３１は、受け付けた抽出対象部分に対応するタグの階層構造上の位置を特定する。登録部１３１は、特定した階層構造上の位置を抽出対象部分の位置特定情報とする。また、登録部１３１は、抽出対象部分に対応するタグの名称、及び、タグの文書内における順番を、特定した階層構造上の位置とともに抽出対象部分の位置特定情報とする。登録部１３１は、対象ＵＲＬのＨＴＭＬ文書内の各データ項目について、抽出対象部分の選択を受け付けて、タグの階層構造上の位置を特定する。また、登録部１３１は、対象ＵＲＬが複数ある場合には、それぞれの対象ＵＲＬに対応するＨＴＭＬ文書について、同様に抽出対象部分に対応するタグの階層構造上の位置を特定する。登録部１３１は、対象ＵＲＬと抽出対象部分の位置特定情報とを対応付けて、対象ＵＲＬの定義を生成する。登録部１３１は、生成した対象ＵＲＬの定義を対象記憶部１２１に記憶する。つまり、登録部１３１は、生成した対象ＵＲＬの定義を対象記憶部１２１に登録する。【００３５】
ここで、図６を用いて、抽出対象部分の受付画面について説明する。図６は、抽出対象部分の受付画面の一例を示す図である。図６に示すように、受付画面２１は、ＨＴＭＬ文書のソースを表示する領域２２と、抽出対象部分の選択を受け付ける領域２３とを有する。登録部１３１は、例えば、抽出対象部分として住所の選択を受け付ける場合には、領域２３内の抽出対象部分の選択欄で、住所が選択される。登録部１３１は、住所が選択されると、住所に対応するデータ項目の定義を項目記憶部１２２から読み出して抽出定義欄２４に表示する。なお、抽出定義欄２４は、編集可能なテキストとして表示されるようにしてもよい。【００３６】
登録部１３１は、抽出定義欄２４のＣＳＳセレクタ及び正規表現のうち１つ以上に対応する部分を、領域２２に表示されたソース上に抽出対象部分２５として、例えばバックグラウンドを着色して表示させる。登録部１３１は、管理者により抽出対象部分２５が確認され、例えば、図示しないユーザインタフェース上の選択ボタンが押下されることで、抽出対象部分２５の選択を受け付ける。また、登録部１３１は、例えば、管理者のマウス操作によって領域２２の抽出対象部分２５が選択され、選択された抽出対象部分２５を受け付けるようにしてもよい。【００３７】
さらに、登録部１３１は、抽出対象部分２５に対して、不要な文字を削る変換処理をしてもよい。図６の例では、登録部１３１は、管理者によって設定された変換処理欄２６の変換定義を用いて、抽出対象部分２５の文字列に対して変換処理を行う。登録部１３１は、例えば、変換結果２７を抽出対象部分２５の下に挿入して、バックグラウンドを抽出対象部分２５と異なる色に着色して表示させる。登録部１３１は、変換処理を行った場合には、変換結果２７を抽出対象部分として選択させて受け付けることができる。【００３８】
図１の説明に戻って、クロール部１３２は、対象記憶部１２１を参照して、対象ＵＲＬを含むホームページ、例えば、ある観光情報サイトのトップページにアクセスする。すなわち、クロール部１３２は、ある観光情報サイトのサーバに対して通信部１１０を介してページ要求を送信し、当該サーバから通信部１１０を介してページ内容を受信する。クロール部１３２は、例えば、定期的又は不定期に、つまり予め管理者によって指定された間隔又は任意のタイミングで、対象ＵＲＬを含むホームページにアクセスする。指定された間隔は、例えば、１日、１週間、１ヶ月等のように任意の間隔とすることができる。クロール部１３２は、対象記憶部１２１を参照して、ホームページ内の全リンクのうち、ページ内容を取得する対象ＵＲＬを選定する。クロール部１３２は、例えば、観光スポットごとのページの対象ＵＲＬを選定する。クロール部１３２は、選定した対象ＵＲＬからページ内容を取得する。クロール部１３２は、取得したページ内容をページ記憶部１２３に記憶する。また、クロール部１３２は、ページ内容の取得が完了したことを示す取得完了情報を抽出部１３３に出力する。【００３９】
抽出部１３３は、クロール部１３２から取得完了情報が入力されると、対象記憶部１２１の抽出対象部分の位置特定情報を参照して、ページ記憶部１２３に記憶された対象ＵＲＬのページ内容から、抽出対象部分のデータ項目のデータを抽出する。抽出部１３３は、抽出したデータをＵＲＬＩＤと対応付けて、項目記憶部１２２のデータ項目の定義に従って、抽出データ記憶部１２４に記憶する。抽出部１３３は、抽出したデータを抽出データ記憶部１２４に記憶すると、出力制御部１３４に、抽出完了情報を出力する。【００４０】
抽出部１３３は、抽出対象部分のデータ項目のデータを抽出する場合に、項目記憶部１２２の切り出し手法で指定された手法を用いて抽出する。抽出部１３３は、例えば、住所を示すタグの階層が「/info/address/」で定義され、例えば「.address」と記述されたＣＳＳセレクタを用いることで住所を抽出する。この場合には、抽出部１３３は、例えば、タグ内に「address」を含む項目を、住所として切り出すことができる。【００４１】
また、抽出部１３３は、例えば、１行目に「.info」と記述され、２行目に「/<DIV.*>(.+)</DIV>/」と記述され、３行目に「/住所：(.+)$/」と記述された正規表現を用いることで住所を抽出する。この場合には、抽出部１３３は、例えば、ＤＩＶタグのクラスが「info」であるタグに含まれる階層から、「住所：」の文字列の後に続く文字列を住所として切り出すことができる。【００４２】
さらに、抽出部１３３は、抽出したデータを抽出データ記憶部１２４に記憶する場合に、当該抽出したデータが、過去に抽出したデータと異なる場合には、データが変化したことを示す情報を出力部１０２に出力して表示させてもよい。すなわち、抽出部１３３は、過去に抜き出した登録されたタグの階層構造上の位置に対応するデータと、今回抜き出した登録されたタグの階層構造上の位置に対応するデータとが異なる場合に、データが変化したことを示す情報を出力部１０２に出力する。データが変化したことを示す情報は、例えば「住所が更新されています。確認してください。」、「ページのレイアウトが変更されています。確認してください。」といったメッセージが挙げられる。【００４３】
また、抽出部１３３は、ＨＴＭＬ文書についての抽出対象部分の位置が複数登録された場合には、複数の位置に対応するデータの内、過去のデータと一致するデータの数又は率に応じた情報を出力部１０２に出力する。すなわち、抽出部１３３は、例えば、ＨＴＭＬ文書内に登録されたデータ項目が６つある場合に、２つのデータが過去のデータと異なる場合、例えば「２ヶ所の情報が更新されています。確認してください。」といったメッセージを出力部１０２に出力する。また、抽出部１３３は、未知のホームページに対してクロール処理を行った場合に、取得済みのホームページのデータと一致するデータの数又は率に応じた情報を出力部１０２に出力してもよい。取得済みのホームページのデータと一致するデータの数又は率に応じた情報は、例えば「類似ページとのデータ一致率は６６％です。不一致のデータ項目について確認してください。」といったメッセージが挙げられる。【００４４】
出力制御部１３４は、抽出部１３３から抽出完了情報が入力されると、抽出データ記憶部１２４を参照して、抽出したデータを出力データとして出力部１０２に出力して表示させる。また、出力制御部１３４は、抽出したデータの出力時に、過去のクロール処理によって取得して抜き出したデータと、今回のクロール処理によって取得して抜き出したデータとが異なる場合には、例えば表示色を変更するようにしてもよい。なお、出力制御部１３４は、出力部１０２がＳＤメモリカード等のリーダライタである場合には、抽出したデータを出力データとして出力部１０２に出力して、ＳＤメモリカード等に記憶させる。【００４５】
次に、実施例のデータ取得装置１００の動作について説明する。まず、クロール処理の対象ＵＲＬの定義と、抜き出すデータ項目の定義とを生成する定義生成処理について説明する。【００４６】
図７は、定義生成処理の一例を示すフローチャートである。登録部１３１は、例えば、管理者が入力部１０１を操作することにより、抽出対象部分とするデータ名、データ型及び切り出し手法の入力を受け付ける（ステップＳ１）。登録部１３１は、受け付けたデータ名、データ型及び切り出し手法を対応付けて、データ項目の定義を生成する。登録部１３１は、生成したデータ項目の定義を項目記憶部１２２に登録する（ステップＳ２）。【００４７】
登録部１３１は、対象ＵＲＬに対応するＨＴＭＬ文書のソースを出力部１０２に出力して表示させる（ステップＳ３）。登録部１３１は、例えば、管理者が入力部１０１を操作することにより、表示させた対象ＵＲＬに対応するＨＴＭＬ文書のソース上で、抽出対象部分の選択を受け付ける（ステップＳ４）。登録部１３１は、受け付けた抽出対象部分に対応するタグの階層構造上の位置を特定する（ステップＳ５）。登録部１３１は、特定した階層構造上の位置を抽出対象部分の位置特定情報とする（ステップＳ６）。また、登録部１３１は、抽出対象部分に対応するタグの名称、及び、タグの文書内における順番を、特定した階層構造上の位置とともに抽出対象部分の位置特定情報とする。なお、登録部１３１は、対象ＵＲＬのＨＴＭＬ文書内に複数のデータ項目がある場合には、それぞれ抽出対象部分の選択を受け付けて、タグの階層構造上の位置を特定する。【００４８】
登録部１３１は、対象ＵＲＬと抽出対象部分の位置特定情報とを対応付けて、対象ＵＲＬの定義を生成する。登録部１３１は、生成した対象ＵＲＬの定義を対象記憶部１２１に登録する（ステップＳ７）。これにより、データ取得装置１００は、データ項目の定義と対象ＵＲＬの定義を登録することができる。【００４９】
続いて、クロール処理について説明する。図８は、クロール処理の一例を示すフローチャートである。クロール部１３２は、対象記憶部１２１を参照して、対象ＵＲＬを含むホームページにアクセスする（ステップＳ１１）。クロール部１３２は、対象記憶部１２１を参照して、ホームページ内の全リンクのうち、ページ内容を取得する対象ＵＲＬを選定する（ステップＳ１２）。【００５０】
クロール部１３２は、選定した対象ＵＲＬからページ内容を取得する（ステップＳ１３）。クロール部１３２は、取得したページ内容をページ記憶部１２３に記憶する。また、クロール部１３２は、ページ内容の取得が完了したことを示す取得完了情報を抽出部１３３に出力する。【００５１】
抽出部１３３は、クロール部１３２から取得完了情報が入力されると、対象記憶部１２１の抽出対象部分の位置特定情報を参照して、ページ記憶部１２３に記憶された対象ＵＲＬのページ内容から、抽出対象部分のデータ項目のデータを抽出する（ステップＳ１４）。【００５２】
抽出部１３３は、抽出したデータをＵＲＬＩＤと対応付けて、抽出データ記憶部１２４に記憶する（ステップＳ１５）。抽出部１３３は、抽出したデータを抽出データ記憶部１２４に記憶すると、出力制御部１３４に、抽出完了情報を出力する。出力制御部１３４は、抽出部１３３から抽出完了情報が入力されると、抽出データ記憶部１２４を参照して、抽出したデータを出力部１０２に出力して表示させる（ステップＳ１６）。これにより、データ取得装置１００は、タグの階層構造上の位置を特定して登録するので、固有のタグ情報がなくてもＨＴＭＬ文書から対象部分のデータを抜き出して出力できる。また、データ取得装置１００は、フォーマットの異なる種々のホームページから各種情報を収集して、所定のフォーマットに統一したデータベースを構築できる。【００５３】
このように、データ取得装置１００は、特定のＵＲＬに対応付けられ、タグの構造情報を含む文書における抽出対象部分の文書に含まれるタグの階層構造上の位置を特定し、該階層構造上の位置を登録することを許容する。また、データ取得装置１００は、定期的又は不定期に、特定のＵＲＬに対応付けられた文書にアクセスして、登録されたタグの階層構造上の位置に対応するデータを抜き出して、出力する。その結果、固有のタグ情報がなくても対象部分のデータを抜き出して出力できる。【００５４】
また、データ取得装置１００は、抽出対象部分の位置は更に、タグの名称又はタグの文書内における順と、タグの階層構造との組み合わせを用いて特定される。その結果、より正確に対象部分のデータを抜き出して出力できる。【００５５】
また、データ取得装置１００は、過去に抜き出した登録されたタグの階層構造上の位置に対応するデータと、今回抜き出した登録されたタグの階層構造上の位置に対応するデータとが異なる場合に、データが変化したことを示す情報を出力する。その結果、対象ＵＲＬに対応する文書が更新されたことを容易に判別できる。【００５６】
また、データ取得装置１００は、文書についての抽出対象部分の位置が複数登録された場合に、複数の位置に対応するデータの内、過去のデータと一致するデータの数又は率に応じた出力を行う。その結果、未知のホームページに対してクロール処理を行った場合でも、容易にデータを抽出するための定義を設定でき、所望のデータを抜き出して出力できる。【００５７】
また、データ取得装置１００は、ＨＴＭＬ形式で記述された文書又は該文書のソースを表示し、表示された該文書又は該文書のソースに含まれる抽出対象部分の選択を受け付ける。また、データ取得装置１００は、受け付けた抽出対象部分に対応するタグの階層を特定し、特定した該階層を抽出対象部分の位置を特定する情報として登録する。その結果、クロール処理で取得するデータ項目を容易に設定できる。【００５８】
なお、上記実施例では、クロール処理で観光スポットに関するホームページを巡回する場合を説明したが、これに限定されない。例えば、防災情報、交通情報、ツアー商品情報、求人情報等に関するホームページを巡回するようにしてもよい。これにより、データ取得装置１００は、管理者の異なる各種ホームページの情報を横断的に収集し、同一の属性のデータを統合することで、漏れのないデータベースを構築することができる。【００５９】
また、上記実施例では、例えば、住所のデータを収集する場合に、「address」を含むタグの文字列や、正規表現で「住所」の後に続く文字列を取得したが、これに限定されない。例えば、「住所」の他に、「所在地」等の住所表記に用いられる可能性のあるキーワードについて、正規表現を用いて取得するようにしてもよい。これにより、データ取得装置１００は、類似する用語が用いられている場合であっても、同一の属性のデータであるとして統合してデータベース化することができる。【００６０】
また、上記実施例では、観光スポットごとの対象ＵＲＬに対応するＨＴＭＬ文書についてデータを抽出する場合について説明したが、これに限定されない。例えば、観光情報サイトでは、１つのページに多数の観光スポットの情報が紹介されている場合がある。データ取得装置１００は、この様な場合には、スプリッタを用いて観光スポットごとに分割し、分割された部分を対象ＵＲＬの代わりとしてもよい。これにより、データ取得装置１００は、多様なフォーマットのホームページから、所望のデータを取得することができる。【００６１】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、クロール部１３２と、抽出部１３３と、出力制御部１３４とを統合して、出力制御部としてもよい。【００６２】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（又はＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部又は任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（又はＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしてもよいことは言うまでもない。【００６３】
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図９は、データ取得プログラムを実行するコンピュータの一例を示す図である。【００６４】
図９が示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、データ入力を受け付ける入力装置２０２と、モニタ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る媒体読取装置２０４と、各種装置と接続するためのインタフェース装置２０５と、他の情報処理装置等と有線又は無線により接続するための通信装置２０６とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０７と、ハードディスク装置２０８とを有する。また、各装置２０１〜２０８は、バス２０９に接続される。【００６５】
ハードディスク装置２０８には、図１に示した登録部１３１、クロール部１３２、抽出部１３３及び出力制御部１３４の各処理部と同様の機能を有するデータ取得プログラムが記憶される。また、ハードディスク装置２０８には、対象記憶部１２１、項目記憶部１２２、ページ記憶部１２３、抽出データ記憶部１２４、及び、データ取得プログラムを実現するための各種データが記憶される。入力装置２０２は、入力部１０１と同等の機能を有し、例えば、コンピュータ２００の管理者から、対象ＵＲＬ、定義、管理情報等の各種情報の入力を受け付ける。モニタ２０３は、出力部１０２と同等の機能を有し、例えば、コンピュータ２００の管理者に対して管理情報の画面、受付画面、データ表示画面等の各種画面を表示する。インタフェース装置２０５は、例えば、印刷装置等が接続される。通信装置２０６は、例えば、図１に示した通信部１１０と同様の機能を有しネットワークＮと接続され、インターネット上のサイトと各種情報をやりとりする。【００６６】
ＣＰＵ２０１は、ハードディスク装置２０８に記憶された各プログラムを読み出して、ＲＡＭ２０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ２００を図１に示した登録部１３１、クロール部１３２、抽出部１３３及び出力制御部１３４として機能させることができる。【００６７】
なお、上記のデータ取得プログラムは、必ずしもハードディスク装置２０８に記憶されている必要はない。例えば、コンピュータ２００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ２００が読み出して実行するようにしてもよい。コンピュータ２００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこのデータ取得プログラムを記憶させておき、コンピュータ２００がこれらからデータ取得プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００６８】
１００  データ取得装置
１０１  入力部
１０２  出力部
１１０  通信部
１２０  記憶部
１２１  対象記憶部
１２２  項目記憶部
１２３  ページ記憶部
１２４  抽出データ記憶部
１３０  制御部
１３１  登録部
１３２  クロール部
１３３  抽出部
１３４  出力制御部
Ｎ  ネットワーク
【図１】
0006500908.tif 000002
【図２】
0006500908.tif 000003
【図３】
0006500908.tif 000004
【図４】
0006500908.tif 000005
【図５】
0006500908.tif 000006
【図６】
0006500908.tif 000007
【図７】
0006500908.tif 000008
【図８】
0006500908.tif 000009
【図９】
0006500908.tif 000010