JP2012059212A - 抽出装置、抽出方法及び抽出プログラム - Google Patents

抽出装置、抽出方法及び抽出プログラム Download PDF

Info

Publication number
JP2012059212A
JP2012059212A JP2010204636A JP2010204636A JP2012059212A JP 2012059212 A JP2012059212 A JP 2012059212A JP 2010204636 A JP2010204636 A JP 2010204636A JP 2010204636 A JP2010204636 A JP 2010204636A JP 2012059212 A JP2012059212 A JP 2012059212A
Authority
JP
Japan
Prior art keywords
web page
extraction
rule
xsl
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010204636A
Other languages
English (en)
Inventor
Hisaharu Ishii
久治 石井
Yusuke Ichikawa
裕介 市川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2010204636A priority Critical patent/JP2012059212A/ja
Publication of JP2012059212A publication Critical patent/JP2012059212A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)

Abstract

【課題】Webページから適切に抽出すること。
【解決手段】抽出装置は、Webページからデータを抽出するための抽出ルールと、Webページの統一資源位置指定子に基づいて抽出ルールの適用対象となるWebページを特定する特定ルールとを対応付けて記憶する。また、抽出装置は、抽出対象となるWebページが入力されると、入力されたWebページに紐付けられた統一資源位置指定子が特定される特定ルールを抽出ルール記憶部から選択し、選択した特定ルールに対応付けられた抽出ルールを選択する。そして、抽出装置は、選択部により選択された抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する。
【選択図】図1

Description

本発明は、抽出装置、抽出方法及び抽出プログラムに関する。
従来、Webページからデータを抽出する抽出手法がある。抽出手法は、例えば、ヘッダやフッタ、サイトナビゲーションなどをWebページから除外してWebページのページ内容を表す部分を選択的に抽出する場合や、EC(e-commerce)サイトのWeb閲覧ログから個人情報を含まない部分を選択的に抽出する場合、ECサイトの商品情報ページから商品名や価格などを抽出する場合などに用いられる。
例えば、Webページを構造木に変換し、抽出対象とする任意の部分を構造木内の位置として保存する抽出システムがある。抽出システムは、抽出対象とするデータを抽出する際に、抽出対象となるWebページを構文木に変換し、保存しておいた木構造内の位置に対応する部分をWebページの構文木から特定し、特定した部分からデータを抽出する。また、Webページから必要な部分を手動で経験則にてデータを抽出する手法もある。
特開2004−318505号公報
Web Interface Definition Language(WIDL)、[online]、[平成22年7月7日検索]、インターネット(URL:http://www.w3.org/TR/NOTE-widl) Luca Iocchi、The Web-OEM approach to Web information extraction、Journal of Network and Computer Applications、Vol.22、pp.259-269 (1999)
しかしながら、上述した技術では、Webページから適切にデータを抽出できないという問題がある。例えば、上述した抽出システムでは、複数の異なるWebページから抽出する場合、構造の異なるページからはデータを抽出できない。また、例えば、上述した手動で経験則にて抽出する手法では、手間がかかる。
開示の技術は、上述に鑑みてなされたものであって、Webページから適切にデータを抽出可能である抽出装置、抽出方法及び抽出プログラムを提供することを目的とする。
開示する抽出装置は、一つの態様において、 Webページからデータを抽出するための抽出ルールと、Webページの統一資源位置指定子に基づいて当該抽出ルールの適用対象となるWebページを特定する特定ルールとを対応付けて記憶する抽出ルール記憶部を有する。また、抽出装置は、抽出対象となるWebページが入力されると、入力された当該Webページに紐付けられた統一資源位置指定子が特定される特定ルールを前記抽出ルール記憶部から選択し、選択した当該特定ルールに対応付けられた抽出ルールを選択する選択部を有する。また、抽出装置は、前記選択部により選択された抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する抽出部を有する。
開示する抽出装置の一つの態様によれば、Webページから適切にデータを抽出可能であるという効果を奏する。
図1は、実施例1に係る抽出装置の構成の一例を示すブロック図である。 図2は、実施例1における抽出ルール記憶部に記憶された情報の一例を示す図である。 図3は、実施例1におけるデータ抽出部による抽出処理の流れの一例を示すフローチャートである。 図4は、実施例1におけるルール作成部によるルール作成処理の流れの一例を示すフローチャートである。 図5は、実施例2に係る抽出装置の構成の一例を示すブロック図である。 図6は、実施例2におけるWebページデータ記憶部により記憶された情報の一例を示す図である。 図7は、実施例2におけるXSLデータ記憶部により記憶された情報の一例を示す図である。 図8は、実施例2におけるXSLデータの一例を示す図である。 図9は、実施例2におけるページソースの具体的な一例を示す図である。 図10は、実施例2におけるページソースの具体的な一例を示す図である。 図11は、実施例2におけるXSL選択ルールデータ記憶部に記憶された情報の一例を示す図である。 図12は、実施例2における抽出済データ記憶部に記憶された情報の一例を示す図である。 図13は、実施例2における構造変化データ記憶部により記憶された情報の一例を示す図である。 図14は、実施例2におけるデータ抽出部について示すブロック図である。 図15は、実施例2におけるXSL選択データメモリに記憶された情報の一例を示す図である。 図16は、実施例2におけるルール作成部の構成の一例を示すブロック図である。 図17は、実施例2におけるDOMツリーデータメモリに記憶された情報の一例を示す図である。 図18は、実施例2におけるページソースの一例を示す図である。 図19は、実施例2における部分木ハッシュデータメモリに記憶された情報の一例を示す図である。 図20は、実施例2における共通ツリーデータメモリに記憶された情報の一例を示す図である。 図21は、実施例2におけるXSL生成部によるXSLコード生成について示す図である。 図22は、実施例2における構造変化検出部の構成の一例を示すブロック図である。 図23は、実施例2におけるXSL選択部による処理の詳細な流れの一例を示す図である。 図24は、実施例2におけるXSLT処理部による処理の詳細な流れの一例を示す図である。 図25は、実施例2におけるツリー変換部による処理の詳細な流れの一例を示す図である。 図26は、実施例2における部分木ハッシュ生成部による処理の詳細な流れの一例を示す図である。 図27は、実施例2における部分木ハッシュ生成部によるハッシュ化処理の詳細な流れの一例を示すフローチャートである。 図28は、実施例2における共通ツリー抽出部による処理の詳細な流れの一例を示す図である。 図29は、実施例2におけるXSL生成部による処理の詳細な流れの一例を示す図である。 図30は、実施例2におけるXSL生成部によるルール出力処理の詳細な流れの一例を示す図である。 図31は、実施例2におけるXSLTエラー検出部による処理の詳細な流れの一例を示す図である。 図32は、実施例2におけるXSLTエラー検出部によるXSL検索処理の詳細な流れの一例を示すフローチャートである。 図33は、抽出プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。
以下に、開示する抽出装置、抽出方法及び抽出プログラムの実施例について、図面に基づいて詳細に説明する。なお、本実施例により開示する発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[実施例1に係る抽出装置の構成]
図1を用いて、実施例1に係る抽出装置100の構成の一例を示す。図1は、実施例1に係る抽出装置の構成の一例を示すブロック図である。図1に示す例では、抽出装置100は、抽出ルール記憶部111と、データ抽出部120と、ルール作成部130と、構造変化検出部140とを有する。
抽出ルール記憶部111は、Webページからデータを抽出するための抽出ルールと、Webページの統一資源位置指定子に基づいて抽出ルールの適用対象となるWebページを特定する特定ルールとを対応付けて記憶する。統一資源位置指定子は「URL(Uniform Resource Locator)」とも称される。なお、以下では、統一資源位置指定子をURLと記載するが、統一資源位置指定子は、インターネット上に存在する文書や画像などの資源を特定できれば良く、任意の情報であって良い。
図2は、実施例1における抽出ルール記憶部に記憶された情報の一例を示す図である。図2に示すように、抽出ルール記憶部111は、特定ルールと抽出ルールとを対応付けて記憶する。図2に示す例では、抽出ルール記憶部111は、特定ルール「http://aaa\.com/show_cart.*」と抽出ルール「/html[1]/body[1]/table[1]/tr[1]/td[2]」とを対応付けて記憶する。図2に示す例では、特定ルールの「.*」は、前方一致を示す正規表現である。また、図2の抽出ルールでは、ツリー構造を有するWebページのうちデータを抽出する部分を特定する情報としてXpathを用いる場合を例に示した。ただし、本発明はこれに限定されるものではなく、Xpath以外の任意の手法を用いて、ツリー構造を有するWebページのうちデータを抽出する部分を特定しても良い。
すなわち、図2に示す例では、抽出ルール記憶部111は、URLの先頭部分が「http://aaa\.com/show_cart」となるWebページを特定する特定ルールと、「/html[1]/body[1]/table[1]/tr[1]/td[2]」により特定される部分からデータを抽出することを示す抽出ルールとを対応付けて記憶する。
図1の説明に戻る。データ抽出部120は、抽出ルール選択部121と、抽出部122とを有する。抽出ルール選択部121は、抽出対象となるWebページが入力されると、入力されたWebページに紐付けられたURLが特定される特定ルールを抽出ルール記憶部111から選択し、選択した特定ルールに対応付けられた抽出ルールを選択する。
例えば、抽出ルール選択部121は、抽出ルール記憶部111から特定ルールを1つ読み出し、読み出した特定ルールにより抽出対象となるWebページのURLが特定されるか否かを判定する。ここで、抽出ルール選択部121は、特定されないと判定した場合には、別の特定ルールを読み出し、再度判定を行う。そして、抽出ルール選択部121は、特定されると判定するまで処理を繰り返すことで、抽出対象となるWebページのURLが特定される特定ルールを選択する。
また、例えば、抽出ルール選択部121は、抽出ルール記憶部111に記憶された抽出ルールのうち、選択した特定ルールに対応付けられた抽出ルールを選択し、選択した抽出ルールを抽出ルール記憶部111から読み出す。抽出ルール選択部121が特定ルール「http://aaa\.com/show_cart.*」を選択した場合を用いて説明する。この場合、抽出ルール選択部121は、特定ルール「http://aaa\.com/show_cart.*」に対応付けられた抽出ルール「/html[1]/body[1]/table[1]/tr[1]/td[2]」を抽出ルール記憶部111から選択する。
抽出部122は、抽出ルール選択部121により選択された抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する。例えば、抽出部122は、抽出ルール「/html[1]/body[1]/table[1]/tr[1]/td[2]」を用いて抽出処理を実行することで、抽出対象のWebページからデータを抽出する。より詳細な一例をあげて説明すると、抽出部122は、抽出対象となるWebページのツリー構造のうち、「/html[1]/body[1]/table[1]/tr[1]/td[2]」により特定される部分を抽出する。
ルール作成部130は、Webページのツリー構造を比較することで、ツリー構造が類似するWebページ群を取得し、取得したWebページ群に含まれるWebページ各々のツリー構造に共通する部分からデータを抽出する抽出ルールを作成する。また、ルール作成部130は、Webページ群に含まれるWebページ各々に対応付けられたURLに基づいて、作成した抽出ルールの適用対象を特定する特定ルールを作成する。例えば、ルール作成部130は、URL各々に共通する部分を識別し、識別した部分を有するURLを特定する特定ルールを作成する。そして、ルール作成部130は、抽出ルールと特定ルールとを対応付けて抽出ルール記憶部111に格納する。
例えば、取得したWebページ群に含まれるWebページ各々のツリー構造に共通する部分のXpathが、「/html[1]/body[1]/table[1]/tr[1]/td[2]」である場合を用いて説明する。この場合、ルール作成部130は、任意のタイミングとなると、Xpath「/html[1]/body[1]/table[1]/tr[1]/td[2]」を識別し、識別したXpath「/html[1]/body[1]/table[1]/tr[1]/td[2]」を抽出ルールとする。言い換えると、この場合、ルール作成部130は、抽出ルールとしてXpathを作成する。
また、例えば、Webページ群に含まれるWebページ各々に対応付けられたURLの先頭部分が「http://aaa\.com/show_cart」で共通する場合を用いて説明する。この場合、ルール作成部130は、URLの先頭部分が「http://aaa\.com/show_cart」となるWebページを特定する特定ルール「http://aaa\.com/show_cart.*」を作成する。
また、例えば、ルール作成部130は、抽出ルール「/html[1]/body[1]/table[1]/tr[1]/td[2]」と特定ルール「http://aaa\.com/show_cart.*」とを対応付けて、抽出ルール記憶部111に格納する。
ここで、ルール作成部130は、例えば、定期的にルールを作成し、あるいは、後述する構造変化検出部140により変化が検出されるごとにルールを再度作成する。
構造変化検出部140は、Webページのツリー構造が過去のWebページのツリー構造と比較して変化したか否かを検出する。例えば、ツリー構造が変化した場合には、変化前のWebページに対して機能していた抽出ルールにより抽出処理を実行するとエラーが発生することがあるのを踏まえ、構造変化検出部140は、抽出ルールを用いて抽出処理を実行し、エラーが発生した場合に変化したと検出する。なお、以下では、構造変化検出部140が、抽出ルールを用いて抽出処理を実行した際のエラーの有無に基づいて変化を検出する場合を用いて説明するが、本発明はこれに限定されるものではない。例えば、構造変化検出部140は、過去のWebページのツリー構造を保存しておき、現在のWebページのツリー構造と比較することで変化を検出しても良く、任意の手法を用いて良い。
[実施例1におけるデータ抽出部による抽出処理の流れ]
実施例1におけるデータ抽出部120による抽出処理の流れの一例を示す。図3は、実施例1におけるデータ抽出部による抽出処理の流れの一例を示すフローチャートである。データ抽出部120は、以下に説明する一連の処理を、抽出対象となるWebページすべてについて実行するまで繰り返す。
図3に示すように、抽出ルール選択部121は、抽出対象となるWebページがあると(ステップS101肯定)、抽出対象となるWebページに紐付けられたURLが特定される特定ルールを抽出ルール記憶部111から選択する(ステップS102)。図2に示す例では、抽出ルール選択部121は、URLの先頭部分が「http://aaa\.com/show_cart」と一致する場合には、特定ルール「http://aaa\.com/show_cart」を選択する。
そして、抽出ルール選択部121は、選択した特定ルールに対応付けられた抽出ルールを選択する(ステップS103)。例えば、抽出ルール選択部121は、特定ルール「http://aaa\.com/show_cart.*」に対応付けられた抽出ルール「/html[1]/body[1]/table[1]/tr[1]/td[2]」を抽出ルール記憶部111から選択する。
そして、抽出部122は、抽出ルール選択部121により選択された抽出ルールに基づいて抽出処理を実行する(ステップS104)。例えば、抽出部122は、抽出対象となるWebページのツリー構造のうち、「/html[1]/body[1]/table[1]/tr[1]/td[2]」により特定される部分を抽出する。
[実施例1におけるルール作成部によるルール作成処理の流れ]
実施例1におけるルール作成部130によるルール作成処理の流れの一例を示す。図4は、実施例1におけるルール作成部によるルール作成処理の流れの一例を示すフローチャートである。
図4に示すように、任意のタイミングとなると(ステップS201肯定)、ツリー構造が類似するWebページ群を取得し(ステップS202)、共通する部分に基づいて抽出ルールを作成する(ステップS203)。例えば、ツリー構造のうち「/html[1]/body[1]/table[1]/tr[1]/td[2]」が共通する場合には、ルール作成部130は、「/html[1]/body[1]/table[1]/tr[1]/td[2]」により特定される部分からデータを抽出する抽出ルールを作成する。
そして、ルール作成部130は、データ抽出ルールを作成する際に用いたWebページ群のURL各々に基づいて特定ルールを作成する(ステップS204)。例えば、URLの先頭部分が「http://aaa\.com/show_cart」で共通する場合には、ルール作成部130は、URLの先頭部分が「http://aaa\.com/show_cart」となるWebページを特定する特定ルール「http://aaa\.com/show_cart.*」を作成する。
そして、ルール作成部130は、抽出ルールと特定ルールとを対応付けて抽出ルール記憶部111に格納する(ステップS205)。例えば、ルール作成部130は、抽出ルール「/html[1]/body[1]/table[1]/tr[1]/td[2]」と特定ルール「http://aaa\.com/show_cart.*」とを対応付けて抽出ルール記憶部111に格納する。
[実施例1の効果]
上述したように、実施例1によれば、抽出装置100は、抽出ルール記憶部111を有し、抽出対象となるWebページが入力されると、入力されたWebページに紐付けられたURLが特定される特定ルールを抽出ルール記憶部111から選択し、選択した特定ルールに対応付けられた抽出ルールを選択する。そして、抽出装置100は、選択した抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する。この結果、Webページに適した抽出ルールを用いて抽出処理を実行でき、Webページから適切にデータを抽出可能である。
また、実施例1によれば、抽出装置100は、Webページ各々のツリー構造を比較することで、ツリー構造が類似するWebページ群を取得し、取得したWebページ群に含まれるWebページ各々のツリー構造に共通する部分からデータを抽出する抽出ルールを作成する。また、抽出装置100は、抽出ルールが作成されるWebページ群に含まれるWebページ各々のURLに基づいて特定ルールを作成する。そして、抽出装置100は、抽出ルールと特定ルールとを対応付けて抽出ルール記憶部111に格納する。この結果、抽出ルールを自動的に作成でき、ルールを作成する手間を省くことが可能である。
また、実施例1によれば、抽出装置100は、Webページのツリー構造が過去のWebページのツリー構造と比較して変化したか否かを検出するので、Webページの構造が変化したことを簡単に把握可能である。この結果、例えば、すなわち、実施例1によれば、自動的にWebページ抽出に使用する抽出ルールや特定ルールを生成し、生成した抽出ルールや特定ルールを適用してWebページの抽出処理を実施し、更に、Webページの構造変化を検出した場合は、手動又は自動にて抽出ルールや特定ルールを再作成する。この結果、Webページのツリー構造が変化する環境下においても、適切にデータを抽出可能である。また、例えば、同一のWebページから抽出する場合において、Webページの構造が更新されたとしても、データを抽出可能である。
[実施例2に係る抽出装置の構成]
実施例2に係る抽出装置200について示す。図5は、実施例2に係る抽出装置の構成の一例を示すブロック図である。図5に示す例では、抽出装置200は、Webページデータ記憶部211と、XSLデータ記憶部212と、XSL選択ルールデータ記憶部213と、抽出済データ記憶部214と、構造変化データ記憶部215とを有する。また、抽出装置200は、データ抽出部300と、ルール作成部400と、構造変化検出部500とを有する。
Webページデータ記憶部211は、データ抽出部300と、ルール作成部400と、構造変化検出部500と接続される。Webページデータ記憶部211は、例えば、RAM(Random Access Memory)や、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、又は、ハードディスクや光ディスクなどの記憶装置が該当する。
Webページデータ記憶部211は、ツリー構造を有するWebページと、WebページのURLとを対応付けて記憶する。図6は、実施例2におけるWebページデータ記憶部により記憶された情報の一例を示す図である。図6に示す例では、Webページデータ記憶部211は、Webページを一意に識別する「WebページID」と、Webページの「URL」と、Webページの「ページソース」とを含むレコードを記憶する。
図6に示す例では、Webページデータ記憶部211は、WebページID「1」とURL「http://aaa.com/item_detail?code=a001」とページソース「<html><head...〜</htm>」とを含むレコードを記憶する。すなわち、Webページデータ記憶部211は、WebページID「1」により識別されるWebページのURLが「http://aaa.com/item_detail?code=a001」であることを示すレコードであって、Webページのページソースが「<html><head ...〜</htm>」であることを示すレコードを記憶する。
なお、Webページデータ記憶部211に記憶されるレコードは、例えば、抽出装置200の管理者によって格納され、抽出装置200が適宜自動的にクロールすることで得られたレコードが抽出装置200自身によって格納される。
XSLデータ記憶部212は、データ抽出部300、ルール作成部400及び構造変化検出部500と接続される。XSLデータ記憶部212は、例えば、RAMや、フラッシュメモリなどの半導体メモリ素子、又は、ハードディスクや光ディスクなどの記憶装置が該当する。
XSLデータ記憶部212は、Webページからデータを抽出するための抽出ルールを記憶する。また、XSLデータ記憶部212は、抽出ルールとして、Webページのツリー構造により一意に決定されるルールを複数含む抽出ルール群を記憶する。
図7は、実施例2におけるXSLデータ記憶部により記憶された情報の一例を示す図である。図7に示す例では、XSLデータ記憶部212は、XSLを用いた抽出ルールを一意に識別する「XSLID」と、XSLを用いた抽出ルールとなる「XSLコード」とを含むレコードを記憶する。
図7に示す例では、XSLデータ記憶部212は、XSLID「1」と、XSLコード「<?xml version=“1.0”encoding=“UTF-8”?><xsl:stylesheet...〜</xsl:stylesheet>」とを含むレコードを記憶する。また、XSLデータ記憶部212は、同様に、他のXSLIDについても、XSLコードを記憶する。なお、図7に示す例では、説明の便宜上、XSLコードの一部を「...」と記載して省略した。なお、XSLデータ記憶部212に記憶されるレコードは、例えば、後述するルール作成部400によって格納され、抽出装置200の管理者によって格納される。
ここで、XSLコードの一例について更に詳細に説明する。図8は、実施例2におけるXSLデータの一例を示す図である。図8に示す例では、Webページのツリー構造により一意に決定されるルールを複数含むXSLコードを例に示すが、本発明はこれに限定されるものではなく、1つのルールを含むXSLコードであっても良い。
図8の601〜604は、WebページのXML構造を特定するルールであり、611〜613は、WebページのXML構造により一意に決定されるルールを示す。図8に示す例では、601は、「/html/body/table/tr/td」が3つあるXML構造を特定するルールである。602は、「/html/body/table/tr/td」が2つあるXML構造を特定するルールである。603は、「/html/head/title」が「colors」であるXML構造を特定するルールである。604は、「/html/head/title」が「animals」であるXML構造を特定するルールである。611は、3つ目の「/html/body/table/tr/td」からデータを抽出することを示すルールである。612は、2つ目の「/html/body/table/tr/td」からデータを抽出することを示すルールである。613は、1つ目の「/html/body/table/tr/td」からデータを抽出することを示すルールである。
ここで、図9と図10とを用いて、ページソースの具体的な一例をあげて、図8のXSLコードにより抽出されるデータの一例を示す。図9及び図10は、実施例2におけるページソースの具体的な一例を示す。図8のXSLコードでは、まず、図8の601に示すルールによりWebページが特定されるかについて判定される。ここで、図9のページソースには、「/html/body/table/tr/td」が3つある。この結果、図9のページソースからは、図8の611に示すルールに従って、図9の621に示すように、3つ目の「/html/body/table/tr/td」にある「<td>banana</td>」が抽出される。
また、図10のページソースのように、「/html/body/table/tr/td」が3つある場合には、Webページは、図8の601に示すルールでは特定されず、図8の602に示すルールにより特定される。ここで、図10に示す例では、「/html/head/title」は「animals」となっており、図8の604に示すルールに従って、図10の622に示すように、1つ目の「/html/body/table/tr/td」から「<td>dog</td>」が抽出される。
なお、実施例2では、XSLを用いる抽出ルールを用いる場合を例に説明するが、本発明はこれに限定されるものではなく、任意の抽出ルールを用いて良い。
XSL選択ルールデータ記憶部213は、データ抽出部300、ルール作成部400及び構造変化検出部500と接続される。XSL選択ルールデータ記憶部213は、例えば、RAMや、フラッシュメモリなどの半導体メモリ素子、又は、ハードディスクや光ディスクなどの記憶装置が該当する。
XSL選択ルールデータ記憶部213は、抽出ルールと対応付けて、WebページのURLに基づいて抽出ルールの適用対象となるWebページを特定する特定ルールを記憶する。図11は、実施例2におけるXSL選択ルールデータ記憶部に記憶された情報の一例を示す図である。図11に示す例では、XSL選択ルールデータ記憶部213は、特定ルールを一意に識別する「ルールID」と、URLを用いた特定ルールとなる「URLルール」と、「XSLID」とを含むレコードを記憶する。ここで、XSL選択ルールデータ記憶部213の「XSLID」は、XSLデータ記憶部212の「XSLID」に対応し、特定ルールとなる「URLルール」により特定されるWebページが適用対象となるXSLコードを示す。
図11に示す例では、URLルールとして、正規表現を用いる場合を示したが、本発明はこれに限定されるものではなく、正規表現を用いなくても良い。図11に示す例では、XSL選択ルールデータ記憶部213は、ルールID「1」に対応付けて、URLルール「https?://aaa\.com/item_detail\?code=.*」とXSLID「1」とを含むレコードを記憶する。すなわち、XSL選択ルールデータ記憶部213は、「https://aaa.com/item_detail?code=」と前方一致するURLに紐付けられたWebページと、「http://aaa.com/item_detail?code=」と前方一致するURLに紐付けられたWebページとを特定するURLルールを記憶する。また、XSL選択ルールデータ記憶部213は、XSLID「1」のレコードに含まれるURLルールが、XSLID「1」により識別されるXSLコードによる適用対象となるWebページを特定することを記憶する。
また、図11に示す例では、適用順位をルールIDの大小関係で表す場合を例に示した。すなわち、複数のURLルールにより特定されるWebページについては、ルールIDが小さいURLルールを優先する場合を例に示した。ただし、本発明はこれに限定されるものではなく、ルールIDの大小関係以外の情報を用いて適用順位を決定しても良く、任意の情報を用いて良い。なお、XSL選択ルールデータ記憶部213に記憶されるレコードは、例えば、後述するルール作成部400によって格納され、抽出装置200の管理者によって格納される。
抽出済データ記憶部214は、データ抽出部300と接続される。抽出済データ記憶部214は、例えば、RAMや、フラッシュメモリなどの半導体メモリ素子、又は、ハードディスクや光ディスクなどの記憶装置が該当する。
抽出済データ記憶部214は、データ抽出部300によりWebページから抽出されたデータを記憶する。図12は、実施例2における抽出済データ記憶部に記憶された情報の一例を示す図である。図12に示す例では、抽出済データ記憶部214は、「WebページID」と対応付けて、データ抽出部300により抽出されたデータである「XML出力」を記憶する。ここで、図12のWebページIDは、図6のWebページIDと対応する。また、図12に示す例では、データ抽出部300から出力されたデータがXML形式である場合を示したが、本発明はこれに限定されるものではなく、データ抽出部300から出力されたデータの形式は、テキスト形式であっても良く、任意の形式であって良い。
図12に示す例では、抽出済データ記憶部214は、WebページID「1」と、XML出力「<?xml version=“1.0” encoding=“UTF-8”?><item><code>a001</code>...〜</item>」とを含むレコードを記憶する。すなわち、抽出済データ記憶部214は、WebページID「1」により特定されるWebページから抽出されたデータとして、「<?xml version=“1.0” encoding=“UTF-8”?><item><code>a001</code>...〜</item>」を記憶する。なお、図12に示す例では、記載の便宜上、実際に出力されるデータの一部を「...」を用いて省略して記載した。
構造変化データ記憶部215は、構造変化検出部500と接続される。構造変化データ記憶部215は、例えば、RAMや、フラッシュメモリなどの半導体メモリ素子、又は、ハードディスクや光ディスクなどの記憶装置が該当する。
構造変化データ記憶部215は、構造変化検出部500による処理結果を記憶する。図13は、実施例2における構造変化データ記憶部により記憶された情報の一例を示す図である。図13に示す例では、構造変化データ記憶部215は、「WebページID」と、「XSLID」と、「XSLエラー」と、「新XSLID」とを含むレコードを記憶する。
ここで、構造変化データ記憶部215の「WebページID」は、構造変化検出部500による処理対象となったWebページを示す。構造変化データ記憶部215の「XSLID」は、構造変化データ記憶部215のWebページIDにより示されるWebページに対してURLルールに基づいて選択されたXSLコードを示す。「XSLエラー」は、構造変化検出部500による処理結果を示し、構造変化データ記憶部215の「XSLID」により示されるXSLコードを用いてのXSLT処理によりエラーが起きたか否かを示す。図13に示す例では、XSLエラー「YES」は、エラーが起きたことを示し、XSLエラー「NO」は、エラーが起きなかったことを示す。「新XSLID」は、構造変化検出部500による処理結果を示し、構造変化データ記憶部215の「WebページID」に適用してもエラーが起きないXSLコードを示す。なお、ここで、図13において、XSLID「NULL」は、紐付けられたWebページIDについてXSLコードが何も選択されていないことを示す。また、XSLエラー「NULL」は、エラーの有無についての情報が何も格納されていないことを示す。図13のWebページID「4」に示す例では、XSLコードが何も選択されていない結果、エラーの有無についても何ら情報がなく、XSLエラー「NULL」となっている。
図13に示す例では、構造変化データ記憶部215は、WebページID「2」とXSLID「1」とXSLエラー「YES」と新XSLID「3」とを含むレコードを記憶する。すなわち、構造変化データ記憶部215は、WebページID「2」により示されるWebページに、URLルールに基づいて、XSLID「1」により示されるXSLコードが選択されたことを記憶する。また、構造変化データ記憶部215は、WebページID「2」により示されるWebページに、XSLID「1」により示されるXSLコードが適用するとエラーが起こったことを記憶し、XSLID「3」により示されるXSLコードを適用するとエラーが起こらなかったことを記憶する。
なお、構造変化データ記憶部215に記憶されたレコードは、構造変化検出部500により格納される。また、図13を用いて、構造変化検出部500による処理結果の一例を示したが、本発明はこれに限定されるものではなく、構造変化検出部500による処理結果は任意で良く、図13に示す処理結果の形式に限定されるものではない。
[データ抽出部]
図5の説明に戻り、データ抽出部300について説明する。データ抽出部300は、Webページデータ記憶部211、XSLデータ記憶部212及びXSL選択ルールデータ記憶部213と接続される。データ抽出部300は、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。データ抽出部300は、例えば、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、CPU(Central Processing Unit)、MPU(Micro Processing Unit)などの電子回路が該当する。
図14は、実施例2におけるデータ抽出部について示すブロック図である。図14では、説明の便宜上、Webページデータ記憶部211と、XSLデータ記憶部212と、XSL選択ルールデータ記憶部213と、抽出済データ記憶部214とを併せて示した。図14に示す例では、データ抽出部300は、XSL選択データメモリ311と、XSL選択部321と、XSLT処理部322とを有する。
XSL選択データメモリ311は、例えば、RAMやフラッシュメモリなどの半導体メモリ素子が該当する。XSL選択データメモリ311は、XSL選択部321による処理結果を記憶する。具体的には、XSL選択データメモリ311は、抽出対象となるWebページについて、URLルールに基づいてXSL選択部321により選択されたXSLコードを記憶する。
図15は、実施例2におけるXSL選択データメモリに記憶された情報の一例を示す図である。図15に示す例では、XSL選択データメモリ311は、WebページIDに対応付けて、XSLコードを記憶する。ここで、XSL選択データメモリ311のWebページIDは、抽出対象となるWebページを示し、XSL選択データメモリ311のXSLコードは、XSLデータ記憶部212に記憶されたXSLコードのうち、XSL選択部321により選択されたXSLコードを示す。
図15に示す例では、XSL選択データメモリ311は、WebページID「1」とXSLコード「<?xml version=“1.0” encoding=“UTF-8”?><xsl:stylesheet ...〜</xsl:stylesheet>」とを含むレコードを記憶する。すなわち、XSL選択データメモリ311は、WebページID「1」により示されるWebページについて、XSL選択部321によりXSLコード「<?xml version=“1.0” encoding=“UTF-8”?><xsl:stylesheet ...〜</xsl:stylesheet>」が選択されたことを記憶する。
XSL選択部321は、抽出対象となるWebページが入力されると、入力されたWebページに紐付けられたURLが特定される特定ルールをXSL選択ルールデータ記憶部213から選択する。そして、XSL選択部321は、選択した特定ルールに対応付けられた抽出ルールをXSLデータ記憶部212から選択する。
例えば、抽出対象となるWebページのURLが「https://aaa.com/item_detail?code=〜」である場合を用いて説明する。この場合、抽出対象となるWebページのURLはURLルール「https?://aaa\.com/item_detail\?code=.*」により特定され、XSL選択部321は、URLルール「https?://aaa\.com/item_detail\?code=.*」をXSL選択ルールデータ記憶部213から選択する。そして、XSL選択部321は、選択したURLルール「https?://aaa\.com/item_detail\?code=.*」に対応付けられたXSLID「1」をXSL選択ルールデータ記憶部213から取得する。そして、XSL選択部321は、XSLID「1」に対応付けられたXSLコード「<?xml version=“1.0” encoding=“UTF-8”?><xsl:stylesheet ...〜</xsl:stylesheet>」をXSLデータ記憶部212から選択する。
また、例えば、XSL選択部321は、抽出対象となるWebページのWebページIDと選択したXSLコードとを含むレコードを、XSL選択データメモリ311に格納する。より詳細な一例をあげて説明すると、XSL選択部321は、WebページID「1」とXSLコード「<?xml version=“1.0” encoding=“UTF-8”?><xsl:stylesheet ...〜</xsl:stylesheet>」とを含むレコードを格納する。なお、XSL選択部321による処理の詳細な流れの一例については、フローチャートを用いて後述するため、ここでは説明を省略する。
XSLT処理部322は、XSL選択部321により選択された抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する。また、XSL選択部321により抽出ルール群が選択された場合には、XSLT処理部322は、抽出対象となるWebページのツリー構造を識別し、識別したツリー構造に対応するツリー構造対応抽出ルールを抽出ルール群から選択する。そして、XSLT処理部322は、選択したツリー構造対応抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する。
具体的には、XSLT処理部322は、XSL選択データメモリ311からレコードを読み出し、読み出したレコードに含まれるWebページIDに対応付けられたWebページのページソースをWebページデータ記憶部211から読み出す。そして、XSLT処理部322は、読み出したWebページのページソースに対して、読み出したレコードに含まれるXSLコードを用いてXSLT処理を実行することで、Webページからデータを抽出する。例えば、XSLT処理部322は、XSLT処理を実行することで、XSLTコードに含まれるXpathにより指定される箇所からデータを抽出する。
例えば、XSLT処理部322は、WebページID「1」に対応付けられたページソース「<html><head ...〜</htm>」に対して、XSLコード「<?xml version=“1.0” encoding=“UTF-8”?><xsl:stylesheet ...〜</xsl:stylesheet>」を用いてXSLT処理を実行する。
なお、XSLT処理は、JISX4169などの標準に適合したXSLT処理であれば任意の手法を用いて実行して良い。また、ルールとしてXpathを複数含む抽出ルール群である場合には、XSLT処理を実行する過程において、抽出対象となるWebページのページソースに基づいて、処理に用いられるXpathが一意に決定され、一意に決定されたXpathにより指定される箇所にあるデータが抽出される。
また、XSLT処理部322は、処理結果を抽出済データ記憶部214に格納する。例えば、XSLT処理部322は、WebページID「1」により示されるWebページに対してXSLT処理を実行することで得られたXML出力「<?xml version=“1.0” encoding=“UTF-8”?><item><code>a001</code>...〜</item>」と、WebページID「1」とを含むレコードを格納する。なお、XSLT処理部322による処理の詳細な流れの一例については、フローチャートを用いて後述するため、ここでは説明を省略する。
[ルール作成部]
図5の説明に戻り、ルール作成部400について説明する。ルール作成部400は、Webページデータ記憶部211、XSLデータ記憶部212及びXSL選択ルールデータ記憶部213と接続される。ルール作成部400は、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。ルール作成部400は、例えば、ASIC、FPGA、CPU、MPUなどの電子回路が該当する。
ルール作成部400は、Webページデータ記憶部211に記憶されたWebページ各々のツリー構造を比較することで、ツリー構造が類似するWebページ群を取得し、取得したWebページ群に含まれるWebページ各々のツリー構造に共通する部分からデータを抽出する抽出ルールを作成する。また、ルール作成部400は、抽出ルールが作成されたWebページ群に含まれるWebページ各々に対応付けられたURLをWebページデータ記憶部211から取得し、取得したURL各々に基づいて特定ルールを作成する。そそして、ルール作成部400は、抽出ルールと特定ルールとを対応付けて格納する。
ここで、ルール作成部400によるルール作成対象のWebページは、Webページデータ記憶部211に予め記憶されている場合に限定されるものではなく、適宜自動的にクロールしたものを用いても良く、追加収集したものを用いても良い。また、ルールを作成するためのWebページ群と、ルールに基づいた抽出処理対象となるWebページ群とは、同一であっても良く、同一とはならなくても良い。例えば、収集したWebページ群の一部のみを用いてルールを作成し、作成したルールを用いて、残りのWebページ群又は収集した全Webページ群に対して、抽出処理を実施しても良い。
図16は、実施例2におけるルール作成部の構成の一例を示すブロック図である。図16では、説明の便宜上、Webページデータ記憶部211と、XSLデータ記憶部212と、XSL選択ルールデータ記憶部213とを併せて示した。図16に示す例では、ルール作成部400は、DOM(Document Object Model)ツリーデータメモリ411と、部分木ハッシュデータメモリ412と、共通ツリーデータメモリ413と、ツリー変換部421と、部分木ハッシュ生成部422と、共通ツリー抽出部423と、XSL生成部424とを有する。
DOMツリーデータメモリ411は、例えば、RAMやフラッシュメモリなどの半導体メモリ素子が該当する。DOMツリーデータメモリ411は、WebページデータのDOMツリーデータを記憶する。すなわち、Webページのツリー構造に含まれるノード各々についての情報を記憶する。DOMツリーデータメモリ411は、ツリー変換部421によりDOMツリーデータが格納され、部分木ハッシュ生成部422により用いられる。
図17は、実施例2におけるDOMツリーデータメモリに記憶された情報の一例を示す図である。図17に示す例では、DOMツリーデータメモリ411は、「WebページID」と、「ノードID」と、「親ノードID」と、「要素名」と、「要素位置」と、「Xpath」とを含むレコードを記憶する。
ここで、DOMツリーデータメモリ411の「WebページID」は、Webページデータ記憶部211のWebページIDと同一であり、WebページID「2」を含むレコードは、Webページデータ記憶部211のWebページID「2」に対応付けられたページソースについてのDOMツリーデータであることを示す。
「ノードID」は、Webページのツリー構造に含まれるノードを識別する。具体的には、「ノードID」は、DOMツリーデータメモリ411に記憶されたWebページIDが同じレコードの中で、レコードを一意に特定するための情報である。例えば「1」から始まる連番などを用いて良く、任意の情報を用いて良い。ただし、ノードがルートノードである場合には、親ノードIDを「0」とする。「親ノードID」は、ノードIDにより識別されるノードの親ノードを識別する。「要素名」は、ノードの要素名を識別する。「要素位置」は、要素名で識別される要素が親ノードIDにより識別される親ノード配下にて何回目に登場したものかを示す。「Xpath」は、ノードIDにより識別されるノードの位置を示す。
図17に示す例では、DOMツリーデータメモリ411は、WebページID「2」と、ノードID「3」と、親ノードID「2」と、要素名「title」と、要素位置「1」と、Xpath「/html[1]/head[1]/title[1]」とを含むレコードを記憶する。
ここで、図18を用いて、Xpathにより示されるページソース内の位置について簡単に示す。図18は、実施例2におけるページソースの一例を示す図である。図18に示すページソースの一例は、WebページID「2」に対応付けられたWebページのページソースである。図18の631は、Xpath「/html[1]/head[1]/title[1]」により示される位置であり、図18の632は、Xpath「/html[1]/body[1]/table[1]/tr[1]/td[2]」により示される位置である。
部分木ハッシュデータメモリ412は、例えば、RAMやフラッシュメモリなどの半導体メモリ素子が該当する。部分木ハッシュデータメモリ412は、DOMツリーデータメモリ411に記憶されたレコード各々について算出されるハッシュ値と、ノードのサイズを示す「部分木サイズ」とを記憶する。
図19は、実施例2における部分木ハッシュデータメモリに記憶された情報の一例を示す図である。図19に示す例では、部分木ハッシュデータメモリ412は、「WebページID」と「ノードID」と「Xpath」と「ハッシュ値」と「部分木サイズ」とを含むレコードを記憶する。図19の「WebページID」と「ノードID」と「Xpath」とは、DOMツリーデータメモリ411の「WebページID」と「ノードID」と「Xpath」とに対応する。部分木ハッシュデータメモリ412は、部分木ハッシュ生成部422によってレコードが格納され、共通ツリー抽出部423とXSL生成部424とにより用いられる。
図19に示す例では、部分木ハッシュデータメモリ412は、WebページID「2」とノード「1」とXpath「/html[1]」とハッシュ値「4AAQSkZJRgAB...」と部分木サイズ「178」とを含むレコードを記憶する。すなわち、部分木ハッシュデータメモリ412は、WebページID「2」とノード「1」について算出されたハッシュ値が「4AAQSkZJRgAB...」であり、サイズが「178」であることを記憶する。ここで、ノードID「1」のXpathは「/html[1]」であり、ノードID「1」について算出されたハッシュ値は、図18における「<html>」と「<html>」との間にあるタグ各々を入力として算出された値を示す。すなわち、ハッシュ値を算出する際に用いられるデータは、図18に示す例では、「<html>」「<head>」「<title>」などのタグであって、「<title>」にあるデータ「sample」や「<td>」にあるデータ「fruits」などについては用いられない。
また、ノード「1」について算出された部分木サイズは、図18における「<html>」と「<html>」との間にあるデータのサイズの合計を示す。また、同様に、ノードID「2」のXpathは「/html[1]/head[1]」であり、ノードID「2」について算出されたハッシュ値は、図18における「/html[1]/head[1]」と「/html[1]/head[1]」との間にあるタグ各々を入力として算出された値を示す。
共通ツリーデータメモリ413は、例えば、RAMやフラッシュメモリなどの半導体メモリ素子が該当する。共通ツリーデータメモリ413は、ハッシュ値と部分木ハッシュ値と「行数」と「累積サイズ」とを含むレコードを記憶する。ハッシュ値と部分木ハッシュ値とは、部分木ハッシュデータメモリ412のハッシュ値と部分木ハッシュ値と同一である。「行数」は、同一のハッシュ値を有するレコードの数を示す。「累積サイズ」は、行数と部分木サイズとを乗算した値を示す。共通ツリーデータメモリ413は、共通ツリー抽出部423によりレコードが格納され、XSL生成部424によりレコードが用いられる。
図20は、実施例2における共通ツリーデータメモリに記憶された情報の一例を示す図である。図20に示す例では、共通ツリーデータメモリ413は、ハッシュ値「4AAQSkZJRgAB...」と部分木サイズ「178」と行数「1」と累積サイズ「178」とを含むレコードを記憶する。すなわち、ハッシュ値「4AAQSkZJRgAB...」を含むレコードが部分木ハッシュデータメモリ412には「1」あり、累積サイズが「178」であることを記憶する。
また、図20に示す例では、共通ツリーデータメモリ413は、ハッシュ値「QEAYABgAAD2w...」と部分木サイズ「2」と行数「58」と累積サイズ「116」とを含むレコードを記憶する。すなわち、ハッシュ値「QEAYABgAAD2w...」を含むレコードが部分木ハッシュデータメモリ412には「58」あり、累積サイズが「116」であることを記憶する。
ここで、行数が「1」以上になる場合について簡単に付言する。ハッシュ値は、算出対象となるデータが異なる場合には、異なる値となる。「行数」が「1」以上の値を取るということは、同一のハッシュ値が算出されたノードが複数あるということになり、ハッシュ値の算出対象となったタグの組み合わせが同一となるレコードが複数あったことを示す。言い換えると、タグの下位構造が同一となるレコードが複数あることを示す。
ツリー変換部421は、Webページデータ記憶部211に記憶されたレコードを取得し、取得したレコードに含まれるページソースに対してパース処理を実行することで、ページソースをDOMツリーデータに変換する。そして、ツリー変換部421は、変換したDOMツリーデータをDOMツリーデータメモリ411に格納する。
ここで、ツリー変換部421によるパース処理は、「TR X 0065:2002」などの標準に適合したパース処理であれば任意の手法を用いて良い。なお、ツリー変換部421による処理の詳細な流れの一例については、フローチャートを用いて後述するため、ここでは説明を省略する。
部分木ハッシュ生成部422は、DOMツリーデータメモリ411に記憶されたレコードを取得し、取得したレコードに含まれるノードについて、ハッシュ値と部分木サイズとを算出する。そして、部分木ハッシュ生成部422は、算出したハッシュ値と部分木サイズとを含むレコードを部分木ハッシュデータメモリ412に格納する。また、その際、部分木ハッシュ生成部422は、取得したレコードに含まれるWebページIDとノードIDとXpathとを併せて格納する。なお、部分木ハッシュ生成部422による処理の詳細な流れの一例については、フローチャートを用いて後述するため、ここでは説明を省略する。
共通ツリー抽出部423は、部分木ハッシュデータメモリ412に格納されたレコードのうち、ハッシュ値が同一となるレコードをまとめた上で、共通ツリーデータメモリ413に格納する。共通ツリー抽出部423による処理の詳細な流れの一例については、フローチャートを用いて後述するため、ここでは説明を省略する。
XSL生成部424は、Webページのツリー構造を比較することで、ツリー構造が類似するWebページ群を取得し、取得したWebページ群に含まれるWebページ各々のツリー構造に共通する部分からデータを抽出する抽出ルールを作成する。具体的には、XSL生成部424は、Webページのツリー構造を比較することで同一の下位構造を含むツリー構造を有するWebページ群を取得し、取得したWebページ群に含まれるWebページのツリー構造に共通するXpathからデータを抽出する抽出ルールを作成する。
より詳細には、XSL生成部424は、共通ツリーデータメモリ413からレコードを1つ抽出し、抽出したレコードに含まれるハッシュ値と同一のハッシュ値を有するレコードを部分木ハッシュデータメモリ412から取得する。ここで、ハッシュ値が同一となるレコード各々は、下位構造が同一となるノードについてのレコードとなり、XSL生成部424は、同一の下位構造を含むツリー構造を有するWebページ群を取得することになる。
XSL生成部424は、取得したレコードに含まれるXpathのうち最も出現回数が多いXpathからデータを抽出する抽出ルールを作成する。すなわち、最も出現回数が多いXpathを選択することで、他のWebページからデータが抽出される可能性が高いXpathからデータを抽出する抽出ルールを作成する。なお、以下では、最も出現回数が多いXpathを用いる場合を用いて説明するが、本発明はこれに限定されるものではない。例えば、2番目に出願回数が多いXpathを用いても良く、出願回数ではなく出現頻度を用いても良く、任意の手法を用いて良い。
図21は、実施例2におけるXSL生成部によるXSLコード生成について示す図である。例えば、XSL生成部424は、図21に示すテンプレートを用いて、XSLコードを生成する。具体的には、XSL生成部424は、最も出現回数が多いXpathを図21の[MP]に挿入することで、XSLコードを生成する。XSL生成部424は、予めテンプレートが設定されることで、XSLコードを簡単に作成可能となる。ただし、本発明はこれに限定されるものではなく、XSL生成部424は、テンプレートを用いることなく、任意の手法にてXSLコードを生成して良い。
なお、図21に示す例では、1つのルールを含むXSLコードを生成する場合を示した。ただし、上述したように、本発明はこれに限定されるものではなく、複数のルールを含むXSLコードとしても良い。この場合、例えば、XSL生成部424は、取得したWebページ群をツリー構造ごとに更に分類し、分類したツリー構造ごとにXpathを取得する。そして、XSL生成部424は、分類したツリー構造を識別するルールとXpathとを紐付けた上で、複数のXpathを含むXSLコードを生成する。
また、XSL生成部424は、抽出ルールが作成されたWebページ群に含まれるWebページ各々に対応付けられたURLをWebページデータ記憶部211から取得し、取得したURL各々に基づいて特定ルールを作成する。例えば、XSL生成部424は、取得したURLに共通する部分や高頻度にて出現する部分を取得し、取得した部分と一致するURLに紐付けられたWebページを特定する特定ルールを生成する。ここで、XSL生成部424は、取得した部分と正規表現とを組み合わせた特定ルールを生成する。例えば、XSL生成部424は、取得した部分がURLの先頭に出願する場合には、先頭一致を示す正規表現と取得した部分とを組み合わせた特定ルールを生成する。
また、XSL生成部424は、生成した抽出ルールをXSLデータ記憶部212に格納し、生成した抽出ルールと特定ルールとを対応付けてXSL選択ルールデータ記憶部213に格納する。なお、XSL生成部424による処理の詳細な流れの一例については、フローチャートを用いて後述するため、ここでは説明を省略する。
[構造変化検出部]
図5の説明に戻り、構造変化検出部500について説明する。構造変化検出部500は、Webページデータ記憶部211、XSLデータ記憶部212、XSL選択ルールデータ記憶部213及び構造変化データ記憶部215と接続される。構造変化検出部500は、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。構造変化検出部500は、例えば、ASIC、FPGA、CPU、MPUなどの電子回路が該当する。
構造変化検出部500は、Webページのツリー構造が過去のWebページのツリー構造と比較して変化したか否かを検出する。具体的には、構造変化検出部500は、Webページデータ記憶部211に既に記憶されているWebページのツリー構造と、新たに取得したツリー構造とを比較することで、Webページのツリー構造に変化があるか否かを検出する。例えば、構造変化検出部500は、XSLT処理を実行した際にエラーが発生するか否かに基づいて、構造変化の有無を検出する。
また、構造変化検出部500は、所定の間隔で定期的に保存済のWebページのURLへアクセスすることでWebページを取得して処理を実行しても良く、Webページを管理するサーバ側から送信を受けることでWebページを取得しても良い。
図22は、実施例2における構造変化検出部の構成の一例を示すブロック図である。図22では、説明の便宜上、Webページデータ記憶部211と、XSLデータ記憶部212と、XSL選択ルールデータ記憶部213と、構造変化データ記憶部215とを併せて示した。図22に示す例では、構造変化検出部500は、XSL選択データメモリ511と、XSL選択部521と、XSLTエラー検出部522とを有する。
ここで、XSL選択データメモリ511とXSL選択部521とは、それぞれ、XSL選択部321とXSL選択データメモリ311と対応するため、説明を省略する。なお、図22に示す例では、XSL選択データメモリ311とXSL選択データメモリ511とを別の部として記載し、XSL選択部521とXSL選択部321とを別の部として記載したが、本発明はこれに限定されるものではなく、XSL選択データメモリ311とXSL選択データメモリ511とを統合し、XSL選択部521とXSL選択部321とを統合しても良い。
XSLTエラー検出部522は、XSL選択データメモリ511に記憶されたレコードを取得し、取得したレコードに含まれるXSLコードを用いて、レコードに含まれるWebページIDにより識別されるWebページに対してXSLT処理を実行する。そして、XSLT処理にエラーが発生すると、その旨を構造変化データ記憶部215に格納する。
また、XSLTエラー検出部522は、エラーが発生した旨を格納したレコードについて、XSLデータ記憶部212に記憶されたXSLコードのうち、適用可能なXSLコードを判別する。そして、XSLTエラー検出部522は、判別したXSLコードのXSLIDを構造変化データ記憶部215に格納する。
すなわち、過去のWebページと比較してツリー構造が変化すると、過去のWebページに適用したXSLコードを用いてもデータが抽出されないことがある。このことを踏まえ、XSLTエラー検出部522は、XSLT処理にてエラーが発生するか否かに基づいて処理を実行し、エラーが起きたWebページについて適用可能なXSLコードを判別して対応付けて構造変化データ記憶部215に対応付けて格納する。XSLTエラー検出部522による処理の詳細な流れの一例については、フローチャートを用いて後述するため、ここでは説明を省略する。
なお、抽出装置200は、例えば、既知のパーソナルコンピュータ、携帯電話、PHS(Personal Handyphone System)端末、移動体通信端末又はPDA(Personal Digital Assistant)などの情報処理装置を利用して実現しても良い。この場合、例えば、PDAなどの情報処理装置に、図5に示した各部に対応する機能を搭載することで実現して良い。
[実施例2に係る抽出装置による処理]
実施例2に係る抽出装置200の各部による処理の詳細な流れの一例について示す。以下では、XSL選択部321、XSLT処理部322、ツリー変換部421、部分木ハッシュ生成部422、共通ツリー抽出部423、XSL生成部424、XSLTエラー検出部522について、順に説明する。
[実施例2におけるXSL選択部による処理]
図23は、実施例2におけるXSL選択部による処理の詳細な流れの一例を示す図である。図23に示すように、XSL選択部321は、処理タイミングとなると、Webページデータを全て処理したかを判定する(ステップS301)。具体的には、Webページデータ記憶部211に記憶されたレコード全てについてXSLコードを選択したかを判定する。ここで、処理していないと判定した場合には(ステップS301否定)、XSL選択部321は、Webページデータから1行取り出し、PLとする(ステップS302)。例えば、XSL選択部321は、WebページID「1」を含むレコードを取得する。
なお、「PL」は変数を示す。以下では、「(変数を示す語句)とする」という表現は、変数への代入を示すものとして説明する。すなわち、ステップS302に示す例では、「Webページデータから1行取り出し、変数PLに代入する」ことを示すものとして説明する。
そして、XSL選択部321は、XSL選択ルールデータ記憶部213のURLルールに、PLのURLとマッチするものがあるか否かを判定する(ステップS303)。すなわち、抽出対象となるWebページのURLが特定ルールにより特定されるか否かを判定する。ここで、XSL選択部321は、PLのURLとマッチするURLルールがないと判定した場合には(ステップS303否定)、ステップS301に戻り、処理を繰り返す。
一方、XSL選択部321は、PLのURLとマッチするURLルールがあると判定した場合には(ステップS303肯定)、マッチしたXML選択ルールデータの中で、ルールIDが最小の行のXSLIDをSRとする(ステップS304)。なお、「SR」は変数を示す。すなわち、XSL選択部321は、複数のURLルールがマッチする場合には、適用順位が高いURLルールを選択する。例えば、XSL選択部321は、WebページID「1」を含むレコードのWebページのURLが、ルールID「1」と「10」との両方により特定される場合には、ルールID「1」を選択し、ルールID「1」を含むレコードに含まれるXSLID「1」を選択し、SRとする。
そして、XSL選択部321は、XSLデータの中でXSLIDがSRに一致する行のXSLコードと、PLのWebページIDとをXSL選択データメモリ311に格納する(ステップS305)。すなわち、例えば、XSL選択部321は、XSLデータ記憶部212に記憶されたXSLコードのうち、XSLID「1」に対応付けられたXSLコード「<?xml version=“1.0” encoding=“UTF-8”?><xsl:stylesheet ...〜</xsl:stylesheet>」を取得する。そして、XSL選択部321は、取得したXSLコード「<?xml version=“1.0” encoding=“UTF-8”?><xsl:stylesheet ...〜</xsl:stylesheet>」とWebページID「1」とを含むレコードをXSL選択データメモリ311に格納する。そして、XSL選択部321は、ステップS301に戻り処理を繰り返す。
また、ステップS301において、Webページデータを全て処理したと判定すると(ステップS301肯定)、処理を終了する。
[実施例2におけるXSLT処理部による処理]
図24は、実施例2におけるXSLT処理部による処理の詳細な流れの一例を示す図である。図24に示すように、XSLT処理部322は、XSL選択データを全て処理したかを判定する(ステップS401)。すなわち、XSL選択データメモリ311に記憶されたレコード全てについてXSLT処理を実行したかを判定する。ここで、処理していないと判定した場合には(ステップS401否定)、XSLT処理部322は、XSL選択データから1行取り出し、XLとする(ステップS402)。なお、「XL」は変数を示す。すなわち、XSLT処理部322は、XSL選択データメモリ311からレコードを1つ取得し、XLとする。例えば、XSLT処理部322は、WebページID「1」を含むレコードを取得する。
そして、XSLT処理部322は、Webページデータの中で、XLのWebページIDとIDが同じ行のページソースをPSとする(ステップS403)。なお、「PS」は変数を示す。すなわち、XSLT処理部322は、取得したレコードに含まれるWebページIDに対応付けられたページソースをWebページデータ記憶部211から取得し、PSとする。例えば、XSLT処理部322は、WebページID「1」に対応付けられたページソース「<html><head ...〜</htm>」をPSとする。
そして、XSLT処理部322は、PSに対してXLのXSLコードが表すXSLT処理を行う(ステップS404)。すなわち、XSLT処理部322は、XSL選択部321により選択された抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する。例えば、XSLT処理部322は、ページソース「<html><head ...〜</htm>」に対して、XSLコード「<?xml version=“1.0” encoding=“UTF-8”?><xsl:stylesheet ...〜</xsl:stylesheet>」を用いてXSLT処理を実行することで、Webページのページソースから「<?xml version=“1.0” encoding=“UTF-8”?><item><code>a001</code>... 〜 </item>」を抽出する。
そして、XSLT処理部322は、XLのWebページIDとXSLT処理の結果を抽出済データに格納する(ステップS405)。すなわち、例えば、XSLT処理部322は、WebページID「1」とXML出力「<?xml version=“1.0” encoding=“UTF-8”?><item><code>a001</code>... 〜 </item>」とを含むレコードを、抽出済データ記憶部214に格納する。そして、XSLT処理部322は、ステップS401に戻り、処理を繰り返す。
また、XSLT処理部322は、XSL選択データメモリ311に記憶されたレコード全てについてXSLT処理を実行したと判定した場合には(ステップS401肯定)、そのまま処理を終了する。
[実施例2におけるツリー変換部による処理]
図25は、実施例2におけるツリー変換部による処理の詳細な流れの一例を示す図である。図25に示すように、ツリー変換部421は、Webページデータを全て処理したか否かを判定する(ステップS501)。すなわち、抽出ルールと特定ルールとを作成する際に用いるWebページデータ記憶部211のレコードを全てについてルール作成部400による処理が行われたか否かを判定する。
ここで、処理していないと判定した場合には(ステップS501否定)、ツリー変換部421は、Webページデータから1行取り出し、PLとする(ステップS502)。なお、「PL」は変数を示す。例えば、ツリー変換部421は、Webページデータ記憶部211から、WebページID「1」を含むレコードを取得し、PLとする。そして、ツリー変換部421は、PLのページソースをDOMパースする(ステップS503)。すなわち、取得したレコードに含まれるページソースに対してパース処理を実行することで、ページソースをDOMツリーに変換する。
そして、ツリー変換部421は、パース結果のDOMツリーから要素ノードを1つ取り出し、DNとし(ステップS504)、PLのWebページID、DNの要素名、DNの兄弟要素内での位置、DNのXPath、DNのノードID、及びDNの親要素のノードIDをDOMツリーデータに出力する(ステップS505)。なお、「DM」は変数を示す。すなわち、例えば、パース処理を実行することで得られたDOMツリーに含まれる要素それぞれについて、WebページIDとノードIDと親ノードIDと要素名と要素位置とXpathとを含むレコードを、DOMツリーデータメモリ411に格納する。
そして、ツリー変換部421は、DOMツリーの要素ノードを全て処理したかを判定し(ステップS506)、全て処理した判定しない場合には(ステップS506否定)、ステップS504に戻り、ステップS504〜S505を繰り返す。一方、ツリー変換部421は、全て処理した判定した場合には(ステップS506肯定)、ステップS501に戻り、処理を繰り返す。また、ツリー変換部421は、ステップS501において、Webページデータを全て処理したと判定した場合には(ステップS501肯定)、処理を終了する。
[実施例2における部分木ハッシュ生成部による処理]
図26は、実施例2における部分木ハッシュ生成部による処理の詳細な流れの一例を示す図である。以下では、ルートノードについてのレコードを取得して部分木ハッシュを算出する場合を例に説明する。部分木ハッシュ生成部422は、以下に示す処理と同様の処理を実行することで、ルートノード以外のレコードについても、部分木ハッシュを算出する。
図26に示すように、部分木ハッシュ生成部422は、処理タイミングとなると(ステップS601肯定)、DOMツリーデータからルートノードを1つ取り出し、RNとする(ステップS602)。なお、「RN」は変数を示す。すなわち、親ノードIDが「0」のレコードを1つ取得し、RNとする。そして、部分木ハッシュ生成部422は、RNにハッシュ化処理を行う(ステップS603)。すなわち、部分木ハッシュ生成部422は、取得した親ノードIDが「0」のレコードについて、ハッシュ値を算出し、部分木ハッシュデータメモリ412にレコードを格納する。なお、ハッシュ値を算出する処理の詳細については、図27を用いて後述する。部分木ハッシュ生成部422が処理を開始する処理タイミングとは、定期的なタイミングであっても良く、DOMツリーデータメモリ411に新たなレコードが格納されたタイミングであっても良く、任意のタイミングであって良い。
そして、部分木ハッシュ生成部422は、DOMツリーデータのルートノードを全て処理したかを判定し(ステップS604)、処理したと判定した場合には(ステップS604肯定)、処理を終了し、処理していないと判定した場合には(ステップS604否定)、ステップS602に戻って処理を繰り返す。
図27は、実施例2における部分木ハッシュ生成部によるハッシュ化処理の詳細な流れの一例を示すフローチャートである。図27に示す一連の処理は、図26におけるステップS603に対応する。なお、以下では、ハッシュ化処理において、部分木ハッシュデータメモリ412にレコードを格納する処理も併せて実行する場合を用いて説明する。
図27に示すように、部分木ハッシュ生成部422は、処理対象のノードをNとし(ステップS701)、文字列変数BにNの要素名を代入する(ステップS702)。なお、「N」「B」は変数を示す。例えば、部分木ハッシュ生成部422は、ノードID「1」を含むレコードをDOMツリーデータメモリ411から取得し、取得したレコードに含まれるノードを処理対象となる「N」とし、取得したレコードに含まれる要素名「html」を文字列変数Bに代入する。
そして、部分木ハッシュ生成部422は、数値変数Sに1を代入する(ステップS703)。なお、「S」は変数を示す。例えば、部分木ハッシュ生成部422は、「S=1」とする。
そして、部分木ハッシュ生成部422は、Nの子ノードを全て処理したかを判定する(ステップS704)。つまり、ノードID「1」の配下にあるノード全てについて、後述するステップS705を実行したか否かを判定する。ここで、処理していないと判定した場合には(ステップS704否定)、部分木ハッシュ生成部422は、DOMツリーデータから、Nの子ノードCNを1つ取り出し、ハッシュ化処理を行う(ステップS705)。なお、「CN」は変数を示す。Nの子ノードCNは、親ノードIDがNのノードIDに一致するレコードであって、かつ、WebページIDがNのノードIDに一致するレコードに含まれるノードを示す。
また、部分木ハッシュ生成部422は、再帰呼び出しにてNの子ノードのハッシュ値を算出する。図17に示す例では、部分木ハッシュ生成部422は、WebページID「2」と親ノードID「1」とを含むレコードを1つ取得し、取得したレコードについてのハッシュ値を算出する。例えば、部分木ハッシュ生成部422は、取得したレコードのノードについて、ハッシュ値「QEAYABgAAD2w...」を算出する。なお、部分木ハッシュ生成部422がNの子ノードを取得するやり方は、所定の順序であれば良く、その順序は任意であって良い。
そして、部分木ハッシュ生成部422は、CNのハッシュ値をBの末尾に加え(ステップS706)、CNの部分木サイズをSに加算する(ステップS707)。例えば、部分木ハッシュ生成部422は、文字列変数B「html」の末尾に、算出したハッシュ値「QEAYABgAAD2w...」を加えることで、文字列変数Bを「htmlQEAYABgAAD2w...」とする。また、例えば、部分木ハッシュ生成部422は、ハッシュ値を算出したCNのサイズが「2」である場合には、数値変数S「1」に「2」を加えることで、「3」とする。
そして、部分木ハッシュ生成部422は、ステップS704に戻り、Nの子ノードを全て処理したかを判定し(ステップS704)、処理したと判定するまで、ステップS705〜S707を繰り返す。つまり、この結果、文字列変数Bは、Nの子ノード各々について算出されたハッシュ値が連結された文字列となる。
一方、部分木ハッシュ生成部422は、Nの子ノードを全て処理したかを判定した場合には(ステップS704肯定)、Bのハッシュ値を計算する(ステップS708)。すなわち、部分木ハッシュ生成部422は、Nの子ノード各々について算出されたハッシュ値が連結された文字列から、ハッシュ値を算出する。なお、ハッシュ値を算出する手法は、CRC32、MD5などの一様性のあるハッシュ値計算手法であれば、任意の方法で良い。
そして、部分木ハッシュ生成部422は、部分木ハッシュデータに、NのWebページID、NのノードID、NのXPath、Bのハッシュ値、及び、部分木サイズSを出力する(ステップS709)。つまり、部分木ハッシュ生成部422は、WebページID「2」とノードID「1」とXpath「/html[1]」とハッシュ値「4AAQSkZJRgAB...」と部分木サイズ「178」とを含むレコードを、部分木ハッシュデータメモリ412に格納する。
[実施例2における共通ツリー抽出部による処理]
図28は、実施例2における共通ツリー抽出部による処理の詳細な流れの一例を示す図である。図28に示すように、共通ツリー抽出部423は、処理タイミングとなると(ステップS801肯定)、部分木ハッシュデータをハッシュ値順にソートする(ステップS802)。すなわち、共通ツリー抽出部423は、部分木ハッシュデータメモリ412に記憶されたレコードを、ハッシュ値順に並べなおす。なお、共通ツリー抽出部423の処理タイミングとは、例えば、定期的なタイミングや、部分木ハッシュデータメモリ412にレコードが格納されたタイミングなどが該当する。
そして、共通ツリー抽出部423は、部分木ハッシュデータを全て処理したかを判定し(ステップS803)、処理していないと判定した場合に(ステップS803否定)、部分木ハッシュデータからハッシュ値を1つ取り出し、Hとする(ステップS804)。なお、「H」は変数を示す。すなわち、例えば、共通ツリー抽出部423は、部分木ハッシュデータメモリ412からレコードを1つ取得し、取得したレコードに含まれるハッシュ値を「H」とする。例えば、共通ツリー抽出部423は、WebページID「2」とノードID「1」とXpath「/html[1]」とハッシュ値「4AAQSkZJRgAB...」と部分木サイズ「178」とを含むレコードを取得し、ハッシュ値「4AAQSkZJRgAB...」を「H」とする。
そして、共通ツリー抽出部423は、部分木ハッシュデータから、ハッシュ値がHである行を抽出する(ステップS805)。すなわち、共通ツリー抽出部423は、ハッシュ値が同一となるレコードを取得する。例えば、共通ツリー抽出部423は、ハッシュ値が「4AAQSkZJRgAB...」となるレコードを取得する。
そして、共通ツリー抽出部423は、抽出した行の1行目の部分木サイズS、抽出した行の行数L、SとLの積となる累積サイズ、及びHを共通ツリーデータに出力する(ステップS806)。すなわち、共通ツリー抽出部423は、取得したレコード数を識別して行数Lとし、最初に抽出したレコードの部分木サイズSと行数Lとを乗算した値を累積サイズとする。そして、共通ツリー抽出部423は、識別した行数Lと、算出した累積サイズと、ハッシュ値Hと、部分木サイズSとを含むレコードを、共通ツリーデータメモリ413に格納する。例えば、共通ツリー抽出部423は、ハッシュ値「4AAQSkZJRgAB...」と部分木サイズS「178」と行数L「1」と累積サイズ「178」とを含むレコードを格納する。
そして、共通ツリー抽出部423は、ステップS803に戻り、部分木ハッシュデータを全て処理していないと判定した場合には(ステップS803否定)、上述したステップS804〜S806を繰り返す。一方、共通ツリー抽出部423は、部分木ハッシュデータを全て処理したと判定した場合には(ステップS803肯定)、処理を終了する。
[実施例2におけるXSL生成部による処理]
図29は、実施例2におけるXSL生成部による処理の詳細な流れの一例を示す図である。図29に示すように、XSL生成部424は、処理タイミングとなると(ステップS901肯定)、共通ツリーデータを累積サイズ順にソートする(ステップS902)。具体的には、XSL生成部424は、共通ツリーデータメモリ413に記憶されたレコードを累計サイズが大きい順に並べる。XSL生成部424の処理タイミングとは、例えば、定期的なタイミングや、共通ツリーデータメモリ413にレコードが格納されたタイミングなどが該当する。
そして、XSL生成部424は、数値変数IDSとIDRにそれぞれ「1」を代入する(ステップS903)。なお、「IDS」と「IDR」とは変数を示す。具体的には、「IDS」は、XSLデータについての変数を示し、「IDR」は、URLルールについての変数を示す。
そして、XSL生成部424は、共通ツリーデータを全て処理したかを判定する(ステップS904)。具体的には、XSL生成部424は、共通ツリーデータメモリ413に記憶されたレコード全てについて後述する処理を行ったかを判定する。ここで、XSL生成部424は、処理を行ったと判定した場合には(ステップS904肯定)、処理を終了する。
一方、XSL生成部424は、処理を行っていないと判定した場合には(ステップS904否定)、共通ツリーデータから行を1つ取り出し、CTとする(ステップS905)。具体的には、XSL生成部424は、共通ツリーデータメモリ413から、累計サイズが大きいレコードから順に1つのレコードを取得し、CTとする。なお、「CT」は変数を示す。例えば、XSL生成部424は、ハッシュ値「4AAQSkZJRgAB...」と部分木サイズ「178」と行数「1」と累計サイズ「178」とを含むレコードを取得し、CTとする。
そして、XSL生成部424は、CTにルール出力処理を行う(ステップS906)。すなわち、XSL生成部424は、抽出ルールを作成し、特定ルールを作成し、抽出ルールをXSLデータ記憶部212に格納し、特定ルールを抽出ルールと紐付けた上でXSL選択ルールデータ記憶部213に格納する。ルール出力処理の詳細な流れの一例については図30を用いて後述する。
そして、XSL生成部424は、数値変数IDSとIDRにそれぞれ1を加算する(ステップS907)。例えば、数値変数IDSとIDRとに「1」加算することで、数値変数IDSとIDRとを「2」とする。そして、XSL生成部424は、ステップS904に戻り、処理を行ったと判定するまでステップS904〜S907を繰り返す。
図30は、実施例2におけるXSL生成部によるルール出力処理の詳細な流れの一例を示す図である。図30に示す一連の流れは、図29におけるステップS906に対応する。
図30に示すように、XSL生成部424は、部分木ハッシュデータから、ハッシュ値がCTのハッシュ値と一致する行を抽出し、SHとする(ステップS1001)。例えば、XSL生成部424は、部分木ハッシュデータメモリ412に記憶されたレコードのうち、ハッシュ値が「4AAQSkZJRgAB...」となるレコードを全て抽出し、「SH」とする。すなわち、XSL生成部424は、Webページのツリー構造を比較することで同一の下位構造を含むツリー構造を有するWebページ群を取得する。言い換えると、XSL生成部424は、Webページのツリー構造を比較することで、ツリー構造が類似するWebページ群を取得する。
そして、XSL生成部424は、SHをXPath順にソートし、最も出現回数が多いXPathをMPとする(ステップS1002)。すなわち、下位構造が同一であったとしても、取得したレコードのノードの位置を示すXpathが同一とは限らないことを踏まえ、他のWebページからデータを抽出できる可能性が高いと考えられる出現回数が他と比較して多いXpathを取得し、MPとする。なお、「MP」は図21に示したXSLコードを生成するためのテンプレートのうちXpathを挿入する箇所を示す。つまり、XSL生成部424は、取得したレコードに含まれるXpathのうち最も出現回数が多いXPathにより指定される箇所からデータを抽出するXSLコードを生成する。
そして、XSL生成部424は、SHに、新規の列「URL」を追加する(ステップS1003)。すなわち、XSL生成部424は、部分木ハッシュデータメモリ412から取得したレコード群に、「URL」についての列を追加する。
そして、XSL生成部424は、SHを全て処理したかを判定する(ステップS1004)。つまり、SH全てについてURLを代入する処理を実行したかを判定する。ここで、処理していないと判定した場合には(ステップS1004否定)、SHから行を1つ取り出し、SHLとする(ステップS1005)。なお、「SHL」は変数を示す。そして、XSL生成部424は、Webページデータの中で、WebページIDがSHLのWebページIDに一致する行のURLをSHLのURLに代入する(ステップS1006)。具体的には、XSL生成部424は、取り出したレコードに含まれるWebページIDに対応付けられたURLをWebページデータ記憶部211から取得し、取得したURLを新たに追加した列「URL」に代入する。そして、XSL生成部424は、SHを全て処理したかを再度判定し、全て処理したと判定するまで、ステップS1005及びS1006の処理を繰り返す。
一方、XSL生成部424は、SHを全て処理したと判定した場合には(ステップS1004肯定)、SHの1行目のURLを文字列変数MUに代入する(ステップS1007)。そして、XSL生成部424は、SHの全ての行のURLにMUが前方一致するかを判定し(ステップS1008)、一致しないと判定した場合には(ステップS1008否定)、MUの末尾の1文字を削除する(ステップS1009)。その後、再度前方一致すると判定するまで、ステップS1009を繰り返す。すなわち、XSL生成部424は、URL各々に共通する前方部分を抽出する。
そして、XSL生成部424は、再度前方一致すると判定した場合には(ステップS1008肯定)、テンプレートTSにMPを埋め込んだXSLコードと、IDSをXSLデータに出力する(ステップS1010)。具体的には、XSL生成部424は、ステップS1002にて生成したXSLコードをXSLデータ記憶部212に格納し、XSLIDとしてIDSを格納する。
そして、XSL生成部424は、MUの末尾に文字列「.*」を結合したURLルールと、IDRと、IDSをXSL選択ルールデータに出力する(ステップS1011)。具体的には、XSL生成部424は、ステップS1008にて生成したURL列と前方一致するURLを特定するURLルールを生成してXSL選択ルールデータ記憶部213に格納し、ルールIDとしてIDRを格納し、XSLIDとしてIDSを格納する。すなわち、XSL生成部424は、URLルールをXSLコードと紐付けて、XSL選択ルールデータ記憶部213に格納する。なお、「.*」は前方一致を示す正規表現である。
なお、図30に示す例では、XSL生成部424が、SH全ての行のURLに一致する前方部分を取得し、取得した前方部分と一致するURLを特定するURLルールを生成する場合を用いて説明した。ただし、本発明はこれに限定されるものではなく、任意のURLルールを生成して良い。すなわち、後方部分と一致するURLを特定するURLルールを生成しても良く、中間部分が一致するURLルールを生成しても良く、任意のURLルールを任意の手法にて生成して良い。
[実施例2におけるXSLTエラー検出部による処理]
図31は、実施例2におけるXSLTエラー検出部による処理の詳細な流れの一例を示す図である。図31に示すように、XSLTエラー検出部522は、Webページデータを全て処理したか否かを判定する(ステップS1101)。例えば、XSLTエラー検出部522は、Webページデータ記憶部211に記憶されたレコード全てについて、構造変化検出部500による処理が行われたか否かについて判定する。
そして、XSLTエラー検出部522は、処理していないと判定した場合には(ステップS1101否定)、Webページデータから1行取り出し、WPとし(ステップS1102)、XSL選択データにWebページIDが、WPのWebページIDと一致する行(XL)があるかを判定する(ステップS1103)。すなわち、XSLTエラー検出部522は、Webページデータ記憶部211から取得したレコードに関するWebページについて、XSLコードが選択済であり、XSL選択データメモリ511に格納済であるかを判定する。なお、「WP」「XL」は変数を示す。
そして、XSLTエラー検出部522は、WPのWebページIDと一致する行(XL)があると判定した場合には(ステップS1103肯定)、WPのページソースに対して、XLのXSLコードが表すXSLT処理を行う(ステップS1104)。具体的には、XSLTエラー検出部522は、XSL選択データメモリ511に記憶されたレコードを取得し、取得したレコードに含まれるXSLコードを用いて、レコードに含まれるWebページIDにより識別されるWebページに対してXSLT処理を実行する。
そして、XSLTエラー検出部522は、XSLT処理の結果エラーが起きたかを判定する(ステップS1105)。ここで、XSLTエラー検出部522は、エラーが起きたと判定した場合には(ステップS1105肯定)、WPに対してXSL検索処理を行う(ステップS1106)。すなわち、XSLTエラー検出部522は、エラーが起きたWebページに対して適用可能なXSLコードを検索する処理を実行する。
また、上述したステップS1103において、WPのWebページIDと一致する行(XL)がないと判定した場合には(ステップS1103否定)、WPに対してXSL検索処理を行う(ステップS1106)。
そして、XSLTエラー検出部522は、WPのWebページID、XLのXSLID、XSLT処理のエラーの有無、XSL検索処理の結果(RXS)を構造変化データに出力する(ステップS1107)。この場合、例えば、XSLTエラー検出部522は、構造変化データ記憶部215に対して、Webページデータ記憶部211から取得したレコードに含まれるWebページIDを「WebページID」として格納し、XSL選択データメモリ511から取得したレコードに含まれるXSLコードのXSLIDを「XSLID」として格納し、エラーが起きたことを示す「YES」を「XSLエラー」として格納し、XSL検索処理結果となるXSLIDを「新XSLID」として格納する。
また、上述したステップS1105において、エラーが起きなかったと判定した場合には(ステップS1105否定)、XSL検索処理を行うことなく、WPのWebページID、XLのXSLID、XSLT処理のエラーの有無、XSL検索処理の結果(RXS)を構造変化データに出力する(ステップS1107)。この場合、例えば、XSLTエラー検出部522は、構造変化データ記憶部215に対して、Webページデータ記憶部211から取得したレコードに含まれるWebページIDを「WebページID」として格納し、XSL選択データメモリ511から取得したレコードに含まれるXSLコードのXSLIDを「XSLID」として格納し、エラーが起きなかったことを示す「NO」を「XSLエラー」として格納する。
図32は、実施例2におけるXSLTエラー検出部によるXSL検索処理の詳細な流れの一例を示すフローチャートである。図32に示す一連の処理は、図31におけるステップS1106に対応する。
図32に示すように、XSLTエラー検出部522は、XSLデータを全て処理したか否かを判定し(ステップS1201)、処理していないと判定した場合に(ステップS1201否定)、XSLデータから1行取り出し、XLとする(ステップS1202)。すなわち、XSLTエラー検出部522は、XSL検索処理を実行する場合には、XSLデータ記憶部212に未取得のレコードがある場合には、レコードを1つ取得する。
そして、XSLTエラー検出部522は、WPのページソースに対してXLのXSLコードが表すXSLT処理を行う(ステップS1203)。そして、XSLTエラー検出部522は、XSLT処理の結果エラーが起きたかを判定し(ステップS1204)、エラーが起きたと判定した場合には(ステップS1204肯定)、ステップS1021に戻り、未取得のレコードをXSLデータ記憶部212から取得してステップS1202〜S1204を繰り返す。
一方、XSLデータ記憶部212は、エラーが起きなかったと判定した場合には(ステップS1204否定)、XSL検索処理の結果(RXS)として、XLのIDを返し(ステップS1205)、処理を終了する。つまり、エラーが起きなかったということは、XSL検索処理の対象となったWebページに適用可能なXSLコードとなり、その後、図31におけるステップ1107において、XSLTエラー検出部522は、構造変化データ記憶部215の新XSLIDとして格納することになる。
一方、XSLTエラー検出部522は、ステップS1201において、全て処理したと判定した場合には(ステップS1201肯定)、つまり、エラーが起きなかったXSLコードが1つもなかった場合には、XSL検索処理の結果(RXS)として、NULLを返す(ステップS1206)。この結果、その後、図31におけるステップ1107において、XSLTエラー検出部522は、構造変化データ記憶部215の新XSLIDにデータを格納しない。
[実施例2の効果]
上述したように、実施例2によれば、抽出装置200は、Webページからデータを抽出するための抽出ルールと、WebページのURLに基づいて抽出ルールの適用対象となるWebページを特定する特定ルールとを対応付けて記憶する。そして、抽出装置200は、抽出対象となるWebページが入力されると、入力されたWebページに紐付けられたURLが特定される特定ルールを選択し、選択した特定ルールに対応付けられた抽出ルールを選択する。そして、抽出装置200は、選択した抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する。この結果、実施例2によれば、Webページから適切にデータを抽出可能である。
また、実施例2によれば、抽出装置200は、ツリー構造を有するWebページと、WebページのURLとを対応付けて記憶する。そして、抽出装置200は、Webページ各々のツリー構造を比較することで、ツリー構造が類似するWebページ群を取得し、取得したWebページ群に含まれるWebページ各々のツリー構造に共通する部分からデータを抽出する抽出ルールを作成する。そして、抽出装置200は、抽出ルールが作成されたWebページ群に含まれるWebページ各々に対応付けられたURLを取得し、取得したURL各々に基づいて特定ルールを作成する。そして、抽出装置200は、抽出ルールと特定ルールとを対応付けて格納する。この結果、ルールを自動的に作成でき、手間を省くことが可能である。
また、実施例2によれば、Webページのツリー構造が過去のWebページのツリー構造と比較して変化したか否かを検出するので、Webページの構造が変化したことを簡単に把握可能である。この結果、例えば、構造が変化した場合に、抽出ルールを再度作成したり、適用するルールを再度選択したりすることで、Webページのツリー構造が変化したとしても適切に抽出可能である。
また、実施例2によれば、XSLデータ記憶部212は、抽出ルールとして、Webページのツリー構造により一意に決定されるルールであるツリー構造対応抽出ルールを複数含む抽出ルール群を記憶する。そして、抽出装置200は、選択した特定ルールに対応付けられた抽出ルール群を選択し、抽出対象となるWebページのツリー構造を識別し、識別したツリー構造に対応するツリー構造対応抽出ルールを抽出ルール群から選択する。そして、抽出装置200は、選択したツリー構造対応抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する。この結果、Webページに適したルールを選択可能である。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例を示す。
[構造変化検出部500による処理結果]
例えば、構造変化検出部500による処理結果をトリガとして用いても良い。例えば、ユーザの手作業によりルールを再度作成する場合には、抽出装置200は、その旨をユーザに出力する。また、例えば、抽出ルールを抽出装置200が自動で再度作成する場合には、その旨をルール作成部400に通知し、ルール作成部400が処理を開始する。
[システム構成]
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については(例えば、図1〜図32)、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、図5に示す例では、XSLデータ記憶部212とXSL選択ルールデータ記憶部213とを統合しても良く、Webページデータ記憶部211を外部装置として抽出装置200とネットワーク経由で接続するようにしても良い。また、例えば、データ抽出部300と、ルール作成部400と、構造変化検出部500とのうち、いずれか1つまたは複数を外部装置とし、ネットワークを介して協同するようにしても良い。
また、例えば、図22に示す各部のみを有する装置とし、構造変化を検出するだけの装置である構造変化検出装置としても良い。すなわち、Webページデータ記憶部211と、XSLデータ記憶部212と、XSL選択ルールデータ記憶部213と、構造変化データ記憶部215と、構造変化検出部500とを有する構造変化検出装置としても良い。なお、構造変化を検出するだけの構造変化検出装置とする場合において、Webページデータ記憶部211と、XSLデータ記憶部212と、XSL選択ルールデータ記憶部213とのうち、一部または全ての記憶部を外部装置とし、構造変化検出装置がネットワーク経由で各記憶部に接続してデータを参照するようにしても良い。
[プログラム]
図33は、抽出プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。図33に例示するように、コンピュータ3000は、例えば、メモリ3010と、CPU(Central Processing Unit)3020と、ハードディスクドライブインタフェース3030と、ディスクドライブインタフェース3040と、シリアルポートインタフェース3050と、ビデオアダプタ3060と、ネットワークインタフェース3070とを有する。コンピュータ3000の各部はバス3100によって接続される。
なお、図33に示すコンピュータの構成は一例であり、コンピュータの構成はこれに限定されるものではない。例えば、図33に示す例では、コンピュータ3000は、ハードディスクドライブ3080を有し、ハードディスクドライブ3080がプログラムデータ3084などを記憶する場合を示したが、本発明はこれに限定されるものではない。例えば、コンピュータ3000は、ハードディスクドライブ3080を有さなくても良い。この場合、コンピュータ3000は、例えば、メモリ3010にプログラムデータ3084などを記憶しても良く、任意の記憶領域にプログラムデータ3084などを記憶して良い。また、コンピュータ3000は、任意の情報処理装置であって良く、例えば、携帯電話、PHS(Personal Handyphone System)端末、移動体通信端末又はPDA(Personal Digital Assistant)などの情報処理装置であっても良い。
メモリ3010は、図33に例示するように、ROM3011及びRAM3012を含む。ROM3011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース3030は、図33に例示するように、ハードディスクドライブ3080に接続される。ディスクドライブインタフェース3040は、図33に例示するように、ディスクドライブ3090に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ3090に挿入される。シリアルポートインタフェース3050は、図33に例示するように、例えばマウス3051、キーボード3052に接続される。ビデオアダプタ3060は、図33に例示するように、例えばディスプレイ3061に接続される。
ここで、図33に例示するように、ハードディスクドライブ3080は、例えば、OS3081、アプリケーションプログラム3082、プログラムモジュール3083、プログラムデータ3084を記憶する。すなわち、開示の技術に係る更新プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール3083として、例えばハードディスクドライブ3080に記憶される。具体的には、上記実施例で説明したデータ抽出部300やルール作成部400、構造変化検出部500と同様の情報処理を実行する手順各々が記述されたプログラムモジュールが、ハードディスクドライブ3080に記憶される。
また、上記実施例で説明したWebページデータ記憶部211やXSLデータ記憶部212、XSL選択ルールデータ記憶部213、抽出済データ記憶部214、構造変化データ記憶部215などに記憶されるデータのように、抽出プログラムによる情報処理に用いられるデータは、プログラムデータ3084として、例えばハードディスクドライブ3080に記憶される。そして、CPU3020が、ハードディスクドライブ3080に記憶されたプログラムモジュール3083やプログラムデータ3084を必要に応じてRAM3012に読み出し、各種の手順を実行する。
なお、抽出プログラムに係るプログラムモジュール3083やプログラムデータ3084は、ハードディスクドライブ3080に記憶される場合に限られない。例えば、プログラムモジュール3083やプログラムデータ3084は、着脱可能な記憶媒体に記憶されても良い。この場合、CPU3020は、ディスクドライブなどの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、更新プログラムに係るプログラムモジュール3083やプログラムデータ3084は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されても良い。この場合、CPU3020は、ネットワークインタフェースを介して他のコンピュータにアクセスすることで各種データを読み出す。
[その他]
なお、本実施例で説明した抽出プログラムは、インターネットなどのネットワークを介して配布することができる。また、抽出プログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
100 抽出装置
111 抽出ルール記憶部
120 データ抽出部
121 抽出ルール選択部
122 抽出部
130 ルール作成部
140 構造変化検出部
200 抽出装置
211 Webページデータ記憶部
212 XSLデータ記憶部
213 XSL選択ルールデータ記憶部
214 抽出済データ記憶部
215 構造変化データ記憶部
300 データ抽出部
311 XSL選択データメモリ
321 XSL選択部
322 XSLT処理部
400 ルール作成部
411 DOMツリーデータメモリ
412 部分木ハッシュデータメモリ
413 共通ツリーデータメモリ
421 ツリー変換部
422 部分木ハッシュ生成部
423 共通ツリー抽出部
424 XSL生成部
500 構造変化検出部
511 XSL選択データメモリ
521 XSL選択部
522 XSLTエラー検出部

Claims (7)

  1. Webページからデータを抽出するための抽出ルールと、Webページの統一資源位置指定子に基づいて当該抽出ルールの適用対象となるWebページを特定する特定ルールとを対応付けて記憶する抽出ルール記憶部と、
    抽出対象となるWebページが入力されると、入力された当該Webページに紐付けられた統一資源位置指定子が特定される特定ルールを前記抽出ルール記憶部から選択し、選択した当該特定ルールに対応付けられた抽出ルールを選択する選択部と、
    前記選択部により選択された抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する抽出部と
    を備えたことを特徴とする抽出装置。
  2. ツリー構造を有する前記Webページと、当該Webページの統一資源位置指定子とを対応付けて記憶するWebページ記憶部と、
    前記Webページ記憶部に記憶されたWebページ各々のツリー構造を比較することで、同一の下位構造を含むツリー構造を有するWebページ群を取得し、取得したWebページ群に含まれるWebページ各々のツリー構造に共通する部分からデータを抽出する抽出ルールを作成する抽出ルール作成部と、
    前記抽出ルール作成部による前記抽出ルールの作成に用いられたWebページ群に含まれるWebページ各々に対応付けられた前記統一資源位置指定子を前記Webページ記憶部から取得し、取得した当該統一資源位置指定子各々に基づいて前記特定ルールを作成する特定ルール作成部と、
    前記抽出ルール作成部により作成された抽出ルールと、前記特定ルール作成部により作成された特定ルールとを対応付けて、前記抽出ルール記憶部に格納する格納部と
    を更に備えたことを特徴とする請求項1に記載の抽出装置。
  3. 前記Webページ記憶部に既に記憶されているWebページのツリー構造と、新たに取得した当該Webページのツリー構造とを比較することで、当該Webページのツリー構造に変化があるか否かを検出する検出部を更に備え、
    前記抽出ルール作成部は、前記検出部により変化が検出されると、抽出ルールを再作成することを特徴とする請求項2に記載の抽出装置。
  4. コンピュータが、
    Webページからデータを抽出するための抽出ルールと、Webページの統一資源位置指定子に基づいて当該抽出ルールの適用対象となるWebページを特定する特定ルールとを対応付けて記憶する抽出ルール記憶部から、抽出対象となるWebページが入力されると、入力された当該Webページに紐付けられた統一資源位置指定子が特定される特定ルールを選択し、選択した当該特定ルールに対応付けられた抽出ルールを選択する選択工程と、
    前記選択工程により選択された抽出ルールに基づいて抽出処理を実行することで、抽出対象のWebページからデータを抽出する抽出工程と
    を含んだことを特徴とする抽出方法。
  5. ツリー構造を有する前記Webページと、当該Webページの統一資源位置指定子とを対応付けて記憶するWebページ記憶部に記憶されたWebページ各々のツリー構造を比較することで、同一の下位構造を含むツリー構造を有するWebページ群を取得し、取得したWebページ群に含まれるWebページ各々のツリー構造に共通する部分からデータを抽出する抽出ルールを作成する抽出ルール作成工程と、
    前記抽出ルール作成工程による前記抽出ルールの作成に用いられたWebページ群に含まれる当該Webページ各々に対応付けられた前記統一資源位置指定子を前記Webページ記憶部から取得し、取得した当該統一資源位置指定子各々に基づいて前記特定ルールを作成する特定ルール作成工程と、
    前記抽出ルール作成工程により作成された抽出ルールと、前記特定ルール作成工程により作成された特定ルールとを対応付けて、前記抽出ルール記憶部に格納する格納工程と
    を更に含んだことを特徴とする請求項4に記載の抽出方法。
  6. 前記Webページ記憶部に既に記憶されているWebページのツリー構造と、新たに取得した当該Webページのツリー構造とを比較することで、当該Webページのツリー構造に変化があるか否かを検出する検出工程を更に含み、
    前記抽出ルール作成工程は、前記検出工程により変化が検出されると、抽出ルールを再作成することを特徴とする請求項5に記載の抽出方法。
  7. 請求項1〜3のいずれか1つに記載の抽出装置としてコンピュータを機能させるためのプログラム。
JP2010204636A 2010-09-13 2010-09-13 抽出装置、抽出方法及び抽出プログラム Pending JP2012059212A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010204636A JP2012059212A (ja) 2010-09-13 2010-09-13 抽出装置、抽出方法及び抽出プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010204636A JP2012059212A (ja) 2010-09-13 2010-09-13 抽出装置、抽出方法及び抽出プログラム

Publications (1)

Publication Number Publication Date
JP2012059212A true JP2012059212A (ja) 2012-03-22

Family

ID=46056193

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010204636A Pending JP2012059212A (ja) 2010-09-13 2010-09-13 抽出装置、抽出方法及び抽出プログラム

Country Status (1)

Country Link
JP (1) JP2012059212A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016099686A (ja) * 2014-11-19 2016-05-30 日本電信電話株式会社 スニペット生成装置、スニペット生成方法及びスニペット生成プログラム
CN110020054A (zh) * 2017-12-21 2019-07-16 腾讯科技(深圳)有限公司 网页内容爬取方法、装置、计算机设备和存储介质
CN110968761A (zh) * 2019-11-29 2020-04-07 福州大学 一种网页结构化数据自适应提取方法
US11144565B2 (en) 2014-12-15 2021-10-12 Inter-University Research Institute Corporation Research Organization Of Information And Systems Information extraction apparatus, information extraction method, and information extraction program

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002312379A (ja) * 2001-04-09 2002-10-25 Mitsubishi Electric Corp 情報抽出方法および情報抽出装置
JP2004220251A (ja) * 2003-01-14 2004-08-05 Nippon Telegr & Teleph Corp <Ntt> 情報抽出規則作成システム、情報抽出規則作成方法及び情報抽出規則作成プログラム
JP2004318505A (ja) * 2003-04-16 2004-11-11 Nippon Telegr & Teleph Corp <Ntt> 構造化文書の部分指定及び抽出方法及び構造化文書の部分指定装置及び構造化文書の抽出装置及び構造化文書の部分指定プログラム及び構造化文書の抽出プログラム
JP2005301437A (ja) * 2004-04-07 2005-10-27 Hitachi Ins Software Ltd 適応型ウエブページデータ抽出装置および抽出プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002312379A (ja) * 2001-04-09 2002-10-25 Mitsubishi Electric Corp 情報抽出方法および情報抽出装置
JP2004220251A (ja) * 2003-01-14 2004-08-05 Nippon Telegr & Teleph Corp <Ntt> 情報抽出規則作成システム、情報抽出規則作成方法及び情報抽出規則作成プログラム
JP2004318505A (ja) * 2003-04-16 2004-11-11 Nippon Telegr & Teleph Corp <Ntt> 構造化文書の部分指定及び抽出方法及び構造化文書の部分指定装置及び構造化文書の抽出装置及び構造化文書の部分指定プログラム及び構造化文書の抽出プログラム
JP2005301437A (ja) * 2004-04-07 2005-10-27 Hitachi Ins Software Ltd 適応型ウエブページデータ抽出装置および抽出プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
肥後 芳樹,楠本 真二,井上 克郎: "コードクローン検出とその関連技術", 電子情報通信学会論文誌 (J91−D) 第6号, vol. 第J91-D巻第6号【ISSN】1880-4535, JPN6014007218, 1 June 2008 (2008-06-01), JP, pages 1465 - 1481, ISSN: 0002750466 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016099686A (ja) * 2014-11-19 2016-05-30 日本電信電話株式会社 スニペット生成装置、スニペット生成方法及びスニペット生成プログラム
US11144565B2 (en) 2014-12-15 2021-10-12 Inter-University Research Institute Corporation Research Organization Of Information And Systems Information extraction apparatus, information extraction method, and information extraction program
CN110020054A (zh) * 2017-12-21 2019-07-16 腾讯科技(深圳)有限公司 网页内容爬取方法、装置、计算机设备和存储介质
CN110020054B (zh) * 2017-12-21 2022-10-25 腾讯科技(深圳)有限公司 网页内容爬取方法、装置、计算机设备和存储介质
CN110968761A (zh) * 2019-11-29 2020-04-07 福州大学 一种网页结构化数据自适应提取方法
CN110968761B (zh) * 2019-11-29 2022-07-08 福州大学 一种网页结构化数据自适应提取方法

Similar Documents

Publication Publication Date Title
JP6141490B2 (ja) ウェブページ情報を抽出する方法およびシステム
US9639631B2 (en) Converting XML to JSON with configurable output
US7912846B2 (en) Document processing method, recording medium, and document processing system
US9836438B2 (en) Methods and systems of outputting content of interest
CN108090104B (zh) 用于获取网页信息的方法和装置
WO2015047920A1 (en) Title and body extraction from web page
KR102033416B1 (ko) 문서로부터 추출되는 데이터를 생성하는 방법 및 그 장치
CN107220250A (zh) 一种模板配置方法及系统
JP2012059212A (ja) 抽出装置、抽出方法及び抽出プログラム
CN111381809B (zh) 一种焦点页面的查找方法及装置
CN109710864B (zh) 页面内容划分方法、装置、可读存储介质及电子设备
KR20140008798A (ko) 정형 및 비정형 데이터를 xml 문서에 구현하는 방법
JP4439497B2 (ja) 検索処理装置及びプログラム
JP2006065467A (ja) データ抽出定義情報生成装置およびデータ抽出定義情報生成方法
CA2752898A1 (en) Methods and systems of outputting content of interest
JP5263635B2 (ja) 検索式生成システム
CN103577578B (zh) 一种标记文件解析方法和装置
CN114117242A (zh) 数据查询方法和装置、计算机设备、存储介质
JP2013218627A (ja) 構造化文書からの情報抽出方法、装置、及びプログラム
KR101827088B1 (ko) 분석 모듈 기반의 생체신호 분석 시스템 및 방법
JP5903372B2 (ja) キーワード関連度スコア算出装置、キーワード関連度スコア算出方法、及びプログラム
CN114003714B (zh) 一种文档上下文感知的智能知识推送方法
JP5068356B2 (ja) ブログ本文特定装置及びブログ本文特定方法
JP5652519B2 (ja) 情報検索方法、プログラム及び装置
JP2000322167A (ja) データ管理システムおよびデータ属性表示方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121102

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140225

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140805