(57)【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令を備えた１つまたは複数の記憶媒体であって、前記コンピュータ実行可能命令はコンピュータによって実行されると、
ウェブページに基づいて、スクリプトファイルを示すスクリプト情報を取得すること、
前記ウェブページに関連する非同期ウェブアプリケーションに関連する呼び出しを含む関数を判定するために、前記スクリプトファイルを解析することであって、前記スクリプトファイルは、少なくとも１つのフレームワークスクリプトファイル、及び、少なくとも１つの非フレームワークスクリプトファイルを含むこと、
前記少なくとも１つの非フレームワークスクリプトファイルが、１つまたは複数の非同期ＪａｖａＳｃｒｉｐｔ及びＸＭＬ（Ａｊａｘ）コールを含む１つまたは複数の関数を定義するか判定すること、
前記少なくとも１つの非フレームワークスクリプトファイルが前記１つまたは複数の関数を定義するという判定に応じて、前記少なくとも１つのフレームワークスクリプトファイルを解析すること、
前記ウェブページに関連する前記関数に対応するユーザ操作をシミュレートすること、および、
前記ユーザ操作に応じて、前記ウェブページに関連するコンテンツを生成するために前記関数を呼び出すこと
を含む動作を実行することを特徴とする１つまたは複数の記憶媒体。
【請求項２】
前記非同期ウェブアプリケーションは、非同期ＪａｖａＳｃｒｉｐｔ及びＸＭＬ（Ａｊａｘ）技術を使用して作成されることを特徴とする請求項１に記載の１つまたは複数の記憶媒体。
【請求項３】
前記動作は、
前記スクリプトファイルが前記少なくとも１つのフレームワークスクリプトファイルを含むか判定すること、
１つまたは複数のＡｊａｘ属性値を入手すること、および、
前記１つまたは複数のＡｊａｘ属性値に基づいて前記関数を判定すること
をさらに含むことを特徴とする請求項１に記載の１つまたは複数の記憶媒体。        
【請求項４】
前記動作は、
前記スクリプトファイルが前記少なくとも１つの非フレームワークスクリプトファイルを含むか判定すること、および、
前記非フレームワークスクリプトファイル内で前記関数を定義するコードに基づいて前記関数を入手すること
をさらに含むことを特徴とする請求項１に記載の１つまたは複数の記憶媒体。
【請求項５】
前記動作は、マークアップ言語フォーマットの前記ウェブページを入手することをさらに含み、前記ウェブページは、１つまたは複数のファイルの位置またはファイル名を含むことを特徴とする請求項１に記載の１つまたは複数の記憶媒体。
【請求項６】
前記スクリプト情報は、ＪａｖａＳｃｒｉｐｔ情報を含むことを特徴とする請求項１に記載の１つまたは複数の記憶媒体。
【請求項７】
前記ウェブページは、前記スクリプト情報を含むか、または、前記スクリプト情報を含むドキュメントを示すことを特徴とする請求項１に記載の１つまたは複数の記憶媒体。
【請求項８】
前記ウェブページは、マークアップ言語に関連することを特徴とする請求項１に記載の１つまたは複数の記憶媒体。
【請求項９】
前記マークアップ言語は、ハイパーテキストマークアップ言語（ＨＴＭＬ）を含み、前記スクリプト情報は、前記ウェブページに対応するＨＴＭＬファイルのタグ対の中に配置されることを特徴とする請求項８に記載の１つまたは複数の記憶媒体。
【請求項１０】
ウェブページコンテンツを取得する方法であって、
コンピューティングデバイスによって、ウェブページに基づいてスクリプト情報を取得すること、
前記ウェブページに関連する非同期ウェブアプリケーションに関連する呼び出しを含む関数を判定するために、前記スクリプト情報を解析することであって、前記スクリプト情報は、少なくとも１つのフレームワークスクリプトファイル、及び、少なくとも１つの非フレームワークスクリプトファイルを含むこと、
前記少なくとも１つの非フレームワークスクリプトファイルが、１つまたは複数の非同期ＪａｖａＳｃｒｉｐｔ及びＸＭＬ（Ａｊａｘ）コールを含む１つまたは複数の関数を定義するか判定すること、
前記少なくとも１つの非フレームワークスクリプトファイルが前記１つまたは複数の関数を定義するという判定に応じて、前記少なくとも１つのフレームワークスクリプトファイルを解析すること、
前記ウェブページに関連する前記関数に対応するユーザ操作をシミュレートすること、および、
前記ウェブページに関連するコンテンツを生成するために、前記関数を呼び出すこと
を含むことを特徴とする方法。
【請求項１１】
前記非同期ウェブアプリケーションは、非同期ＪａｖａＳｃｒｉｐｔ及びＸＭＬ（Ａｊａｘ）技術を使用して作成されることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記スクリプト情報が前記少なくとも１つのフレームワークスクリプトファイルに関連するか判定すること、
１つまたは複数のＡｊａｘ属性値を入手すること、および、
前記１つまたは複数のＡｊａｘ属性値に基づいて前記関数を判定すること
をさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記スクリプト情報が前記少なくとも１つの非フレームワークスクリプトファイルに関連するか判定すること、および、
前記非フレームワークスクリプトファイル内で前記関数を定義するコードに基づいて前記関数を入手すること
をさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１４】
１つまたは複数のプロセッサと、
前記１つまたは複数のプロセッサによって実行可能な複数のコンポーネントを保持するメモリであって、前記複数のコンポーネントは、
ウェブページに基づいてスクリプト情報を取得するように構成されたスクリプト取得ユニット、
スクリプト解析ユニットであって、
前記ウェブページに関連する非同期ウェブアプリケーションに関連する呼び出しを含む関数を判定するために、前記スクリプト情報を解析し、前記スクリプト情報は、少なくとも１つのフレームワークスクリプトファイル、及び、少なくとも１つの非フレームワークスクリプトファイルを含み、
前記少なくとも１つの非フレームワークスクリプトファイルが、１つまたは複数の非同期ＪａｖａＳｃｒｉｐｔ及びＸＭＬ（Ａｊａｘ）コールを含む１つまたは複数の関数を定義するか判定し、
前記少なくとも１つの非フレームワークスクリプトファイルが前記１つまたは複数の関数を定義するという判定に応じて、前記少なくとも１つのフレームワークスクリプトファイルを解析するように構成されたスクリプト解析ユニット、および、
収集ユニットであって、
前記ウェブページに関連する前記関数に対応するユーザ操作をシミュレートし、
前記ウェブページに関連するコンテンツを生成するために前記関数を呼び出す
ように構成された収集ユニット
を含むことを特徴とするコンピューティングデバイス。
【請求項１５】
前記複数のコンポーネントは、マークアップ言語フォーマットの前記ウェブページを入手するように構成されたウェブページ収集ユニットをさらに含み、前記ウェブページは、１つまたは複数のファイルの位置またはファイル名を含むことを特徴とする請求項１４に記載のコンピューティングデバイス。
【請求項１６】
前記ウェブページは、前記スクリプト情報を含むか、または、スクリプト情報を含むドキュメントを示すことを特徴とする請求項１４に記載のコンピューティングデバイス。
【請求項１７】
前記ウェブページは、マークアップ言語に関連することを特徴とする請求項１４に記載のコンピューティングデバイス。
【請求項１８】
前記マークアップ言語は、ハイパーテキストマークアップ言語（ＨＴＭＬ）を含み、前記スクリプト情報は、前記ウェブページに対応するＨＴＭＬファイルのタグ対の中に配置されることを特徴とする請求項１７に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、参照によりその全体が組み込まれる「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＯＦ  ＲＥＴＲＩＥＶＩＮＧ  ＡＪＡＸ  ＷＥＢ  ＰＡＧＥ  ＣＯＮＴＥＮＴ」という名称の２００９年４月２日に出願された中国特許出願第２００９１０１３３６３０．５号の優先権の利益を主張する。
【０００２】
本開示は、ネットワーキング技術に関し、より詳細には、Ａｊａｘウェブページコンテンツを取得する方法およびシステムに関する。
【背景技術】
【０００３】
非同期ＪａｖａＳｃｒｉｐｔおよびＸＭＬ（Ａｊａｘ）は、対話型ウェブページアプリケーションを作成するためのウェブページ開発技術である。従来のウェブページでは、ウェブページコンテンツの一部分が更新される場合、ユーザは、ウェブページ全体がリフレッシュされた後にだけ、更新されたコンテンツを見ることができる。しかし、Ａｊａｘウェブページを用いると、ユーザは、ウェブページ全体をリフレッシュすることなく、コンテンツの更新された部分を入手することができる。ネットワークデバイスの観点から見ると、これは、変更されていない情報を反復して送信することを回避し、したがって、ネットワーク帯域幅を節約し、サーバ作業負荷を低減する。ユーザの観点から見ると、ウェブページブラウジング中の待ち時間を、効果的に低減されることができ、したがって、ユーザ体験が改善される。
【０００４】
検索エンジンは、検索サービスをユーザに提供する能力を用いて、インターネット情報を収集し、整理し、処理することができるシステムである。現在、検索エンジンは、ユーザのためのインターネットサーフィング体験の必要不可欠な補助ツールの１つになっている。検索エンジンの重要なコンポーネントであるウェブクローラは、ウェブページコンテンツを自動的に取得し、リアルタイムに更新されたデータを検索エンジンに提供することができる。従来のウェブページがサポートされることができるが、既存のウェブクローラは、Ａｊａｘウェブページ上でＡｊａｘによって動的に生成されるコンテンツを効果的に取得することができない。結果として、Ａｊａｘウェブページ上の動的コンテンツは、検索エンジンによって収集されることができず、検索エンジンが、完全なコンテンツ検索サービスをユーザに提供することにできないことになる。
【発明の概要】
【０００５】
本開示は、Ａｊａｘウェブページコンテンツを取得し、検索エンジンがＡｊａｘウェブページ内の動的コンテンツを収集することができないことについての解決策を提供する方法およびシステムを提供する。技術スキームが、次の通りに述べられる。
【課題を解決するための手段】
【０００６】
本開示は、Ａｊａｘウェブページコンテンツを取得する方法を提供し、方法は、
ウェブページコードの情報を入手すること、
ウェブページコードのＪａｖａＳｃｒｉｐｔ情報を取得すること、
ウェブページコードにおけるＡｊａｘコールを含む関数を確定するために、ＪａｖａＳｃｒｉｐｔ情報を解析すること、および、
ウェブページコンテンツを入手するために、Ａｊａｘコールを含む関数を起動させることを含む。
【０００７】
本開示は、さらに、Ａｊａｘウェブページコンテンツを取得するシステムを提供し、システムは、
ウェブページコードの情報を入手するために使用されるウェブページコンテンツ収集ユニットと、
ウェブページコードのＪａｖａＳｃｒｉｐｔ情報を取得するために使用されるスクリプト取得ユニットと、
ウェブページコードにおけるＡｊａｘコールを含む関数を確定するために、ＪａｖａＳｃｒｉｐｔ情報を解析するために使用されるスクリプト解析ユニットと、
ウェブページコンテンツを入手するために、Ａｊａｘコールを含む関数を起動させるために使用されるウェブページコンテンツ収集ユニットとを含む。
【０００８】
ウェブページコード内のＪａｖａＳｃｒｉｐｔ情報を解析することによって、上記技術スキームは、ウェブページコードにおけるＡｊａｘコールを含む関数を入手し、それにより生成されるウェブページコンテンツを入手するために、関数をさらに起動させ、そのようにして、Ａｊａｘウェブページ内の動的コンテンツの取得を達成する。上記技術スキームを使用して、検索エンジンは、より完全なウェブページコンテンツを収集し、したがって、よりよい検索サービスを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本開示の例示的な実施形態による、Ａｊａｘウェブページコンテンツを取得する方法のフローチャートを示す図である。
【図２】本開示の例示的な実施形態による、ウェブページコードのＪａｖａＳｃｒｉｐｔ情報を取得する方法のフローチャートを示す図である。
【図３】本開示の例示的な実施形態による、Ａｊａｘウェブページコンテンツを取得するシステムの略構造図を示す図である。
【図４】本開示の例示的な実施形態による、スクリプト取得用ユニットの略構造図を示す図である。
【図５】本開示の例示的な実施形態による、スクリプト解析用ユニットの略構造図を示す図である。
【発明を実施するための形態】
【００１０】
本開示で提供される技術スキームを当業者が理解することができるようにするため、本開示の実現方法が、添付図面を使用してさらに詳細に以下で述べられる。
【００１１】
図１は、本開示の例示的な実施形態による、Ａｊａｘウェブページコンテンツを取得する方法のフローチャートを示す。方法は、以下の手順を含む。
【００１２】
Ｓ１０１  ウェブページコードの情報を入手する。
【００１３】
このブロックは、従来のウェブクローラの作業メカニズムに類似する。ＵＲＬ（すなわち、ユニフォームリソースロケータ）アドレスを通して、アドレスに対応するウェブページコードの情報がネットワークから読み取られる。
【００１４】
Ｓ１０２  ウェブページコードのＪａｖａＳｃｒｉｐｔ情報を取得する。
【００１５】
ウェブページコードの情報を入手すると、その中のＪａｖａＳｃｒｉｐｔ情報が最初に取得される。例としてＨＴＭＬ（すなわち、ハイパーテキストマークアップ言語）を使用する。一般に、ＪａｖａＳｃｒｉｐｔ情報をＨＴＭＬコードに付加するために、以下の２つの手法が使用され得る。
１）ＪａｖａＳｃｒｉｐｔコードをＨＴＭＬコードに直接埋め込むこと、または、
２）ＪａｖａＳｃｒｉｐｔコードを外部ファイルに配置し、ＨＴＭＬコードで外部ファイルを参照すること。
【００１６】
具体的に、第１の手法に関して、ＪａｖａＳｃｒｉｐｔコードは、ＨＴＭＬコードのタグ対である<script>と</script>との間に配置することができる。一般的な書式は、次の通りに示される。
<script type=“text/javascript”>
//jsコード
</script>
上記書式の<script>タグ対の中の部分は、ＪａｖａＳｃｒｉｐｔコードに対応する。複数のＪａｖａＳｃｒｉｐｔ文が、<script>タグ対の中に含まれ得る。<script>タグは、ＨＴＭＬコードの<head>部またはＨＴＭＬコードの<body>部に現れ得る。
【００１７】
第２の手法については、ＪａｖａＳｃｒｉｐｔコードが、外部ファイル内に配置される。この外部ファイルは、その後、ＨＴＭＬコードの<script>タグのｓｒｃ属性を通して参照される。一般的な書式は、以下に示される。
<script type=“text/javascript”src=“js/text.js ”> </script>
【００１８】
ｓｒｃ属性の値は、ＪａｖａＳｃｒｉｐｔファイルの記憶パスおよびファイル名を定義する。記憶パスは、絶対パスであってもよく、または、相対パスであってもよい。上記書式の“text.js”は、参照されているＪａｖａＳｃｒｉｐｔファイル名を指し、一方、“js/”は、そのファイルの記憶パスを指す。ＪａｖａＳｃｒｉｐｔファイルは、一般に、その拡張名として．ｊｓを使用し、<script>タグまたは他のＨＴＭＬタグを持たないＪａｖａＳｃｒｉｐｔコードのみを含む。
【００１９】
上記２つの手法に基づいて、ＨＴＭＬコード内のＪａｖａＳｃｒｉｐｔ情報は、ウェブページコード内の<script>タグをチェックすることによって取得することができる。図２に示すように、ウェブページコードのＪａｖａＳｃｒｉｐｔ情報を取得する方法は、以下の手順を含む。
【００２０】
Ｓ１０２ａ  ウェブページコード内のＪａｖａＳｃｒｉｐｔタグをチェックする。
【００２１】
Ｓ１０２ｂ  ＪａｖａＳｃｒｉｐｔタグの後に位置するＪａｖａＳｃｒｉｐｔ情報のタイプを確定する。タイプがＪａｖａＳｃｒｉｐｔコードに対応する場合、Ｓ１０２ｃが実行される。タイプがＪａｖａＳｃｒｉｐｔファイルに対応する場合、Ｓ１０２ｄが実行される。
【００２２】
Ｓ１０２ｃ  ＪａｖａＳｃｒｉｐｔタグの対内のＪａｖａＳｃｒｉｐｔコードを取得する。
【００２３】
Ｓ１０２ｄ  ＪａｖａＳｃｒｉｐｔファイルの記憶パスおよびファイル名を取得する。
【００２４】
ＨＴＭＬファイルコード内の<script>タグの全てのノードについて上記手順を実行すると、いくつかのＪａｖａＳｃｒｉｐｔコードおよび／またはＪａｖａＳｃｒｉｐｔファイルならびに各記憶パスが入手される。取得された全てのＪａｖａＳｃｒｉｐｔコードは、一時的な．ｊｓファイル（たとえば、ｔｅｍｐ．ｊｓ）に記憶されてもよい。ＪａｖａＳｃｒｉｐｔファイルに関して、本開示の技術スキームにおいては、ＪａｖａＳｃｒｉｐｔファイルの全てのコードを解析することは、必要とされない。取得されたＪａｖａＳｃｒｉｐｔファイル名および各記憶パスだけが、このブロックで記憶され得る。
【００２５】
Ｓ１０３  ウェブページコードにおけるＡｊａｘコールを含む関数を確定するために、ＪａｖａＳｃｒｉｐｔ情報を解析する。
【００２６】
一般に、２つのタイプのＪａｖａＳｃｒｉｐｔファイルが、ウェブページコード内で参照される。１つのタイプは、ＪａｖａＳｃｒｉｐｔフレームワークドキュメントを指す。このタイプのファイルは、一般に、たとえばｐｒｏｔｏｔｙｐｅ．ｊｓなどの、固定ファイル名を有する。別のタイプは、非ＪａｖａＳｃｒｉｐｔフレームワークドキュメントを指す。ウェブページコード内で、Ａｊａｘコールを含む関数は、非ＪａｖａＳｃｒｉｐｔフレームワークドキュメントで定義される。したがって、ＪａｖａＳｃｒｉｐｔフレームワークドキュメントの内容は、さらに解析される必要がない可能性がある。しかし、そのフレームワークタイプに対応する属性値は、そのファイル名に基づいて見出されることができる。さらに、Ａｊａｘコールを含み、非ＪａｖａＳｃｒｉｐｔフレームワークドキュメントで定義される関数は、これらの属性値を使用して見出され得る。さらに、ウェブページコードにおけるＡｊａｘコールを含む関数は、そこで、見出され得る。具体的な手順が、次の通りに示される。
【００２７】
Ｓ１０３ａ  ＪａｖａＳｃｒｉｐｔファイルのファイル名に基づいてＪａｖａＳｃｒｉｐｔファイルのファイルタイプを確定する。
【００２８】
上記方法に従って、ＪａｖａＳｃｒｉｐｔファイルがフレームワークドキュメントであるかまたは非フレームワークドキュメントであるかについての判定が行われる。フレームワークドキュメントであると判定されると、対応する属性値が入手される。
【００２９】
Ｓ１０３ｂ  Ａｊａｘコールを含み、Ａｊａｘ属性値に基づいて非ＪａｖａＳｃｒｉｐｔフレームワークドキュメントで定義される関数を確定する。
【００３０】
ＪａｖａＳｃｒｉｐｔファイルでは、Ａｊａｘコールを含む全ての関数は、Ａｊａｘ属性値と呼ばれる特定のコード部を含まなければならない。したがって、関数がＡｊａｘコールを含むかどうかは、関数がこれらの属性値を含むかどうかに基づいて決定することができる。
【００３１】
Ａｊａｘ属性値は、２つのタイプに分類され得る。種々のタイプのＪａｖａＳｃｒｉｐｔフレームワークに対応する上述の属性値以外に、いかなるタイプのＪａｖａＳｃｒｉｐｔフレームワークを使用することなくＡｊａｘがコールされる状況下では、他の属性値が存在する。これらの後者の属性値は、前もってデータベースファイルに記憶されてもよい。非ＪａｖａＳｃｒｉｐｔフレームワークドキュメント内の関数のコードを、これらの属性値と照合することによって、Ａｊａｘコールを含む関数を、確定することができる。
【００３２】
Ｓ１０３ｃ  Ｓ１０３ｂの結果に基づいてウェブページコード内にＡｊａｘコールを含む関数をさらに確定する。
【００３３】
ウェブページコードで使用される関数が集合Ａを構成し、Ｓ１０３ｂにてＡｊａｘコールを含むと判定された関数が集合Ｂを構成するという仮定が行われる。ＡとＢとの重なりが、ウェブページコード内にＡｊａｘコールを含む必要とされる関数に対応する。ウェブページ内でコールされない関数、すなわち、集合Ｂに属するが集合Ａに属しない関数は、さらなる処理を受ける必要がない可能性がある。
【００３４】
Ｓ１０２にて入手されるＪａｖａＳｃｒｉｐｔ情報が、ＪａｖａＳｃｒｉｐｔなしのＪａｖａＳｃｒｉｐｔコードだけを含む場合、Ｓ１０３ａは省略されてもよいことが留意されるべきである。さらに、上述のようにＪａｖａＳｃｒｉｐｔコードを記憶するために使用される一時的ファイル、ｔｅｍｐ．ｊｓは、非フレームワークドキュメントとしてここで処理されてもよい。
【００３５】
Ｓ１０４  ウェブページコンテンツを入手するために、Ａｊａｘコールを含む関数を起動させる。
【００３６】
どの関数が、ウェブページコードにおいてＡｊａｘコールを含むかを判定すると、Ａｊａｘによって動的に生成されるウェブページコンテンツは、これらの関数を起動させることによって入手することができる。
【００３７】
Ａｊａｘコールを含むいくつかの関数が、ユーザの操作によって、たとえばマウスクリックまたは選択によって起動される。これらの操作は、ブラウザの操作をシミュレートすることによって実現され得る。具体的には、ある種のＷｅｂ自動化試験ツールによって提供されるＡＰＩ（すなわち、アプリケーションプログラミングインタフェース）が、ブラウザ内でユーザによって行われる適切な操作をシミュレートするために使用されてもよい。たとえば、Ｓ１０１〜Ｓ１０３の上記手順によって、http://www.test.com上の関数getinfoが、Ａｊａｘコールを含むことが見出され得、その関数は、マウスクリックによって起動される。したがって、以下の方法は、この関数の起動をシミュレートするために使用され得る。
【００３８】
IE ie=new IE();
//ブラウザを開く操作をシミュレートする
Ie.start(http://www.test.com);
// http://www.test.comをブラウザに入力して、このウエブページを開くことをシミュレートする 
Htmlelement e=ie.htmlElement(attribute(“onclick”, “getInfo”));
//クリック時に呼ばれるＪａｖａＳｃｒｉｐｔ関数であるgetInfoの要素ノードが見出される
e.click();
//マウスを通して要素ノードをクリックする操作をシミュレートする
マウスクリックをシミュレートすると、関数が起動され、この関数によって動的に生成されるコンテンツを、それに対応して入手することができる。
【００３９】
ウェブページコード内のＪａｖａＳｃｒｉｐｔ情報を解析することによって、上記技術スキームは、ウェブページコードにおけるＡｊａｘコールを含む関数を入手し、さらにそれにより生成されるウェブページコンテンツを入手するためにその関数を起動させ、そのようにして、Ａｊａｘウェブページ内の動的コンテンツの取得を達成する。上記技術スキームを使用して、検索エンジンは、より完全なウェブページコンテンツを収集し、したがって、よりよい検索サービスをユーザに提供することができる。
【００４０】
本開示に従ってＡｊａｘウェブページコンテンツを取得する方法は、具体的な例となる実施形態を使用して以下で説明される。Ｓ２０１〜Ｓ２０４の詳細は、Ｓ１０１〜Ｓ１０４の対応するテキスト記述に見出すことができる。
【００４１】
Ｓ２０１  ウェブページコードの情報を入手する。
【００４２】
あるウェブページの以下のコード情報が、ＵＲＬアドレスに基づいて入手されると仮定する。
<!DOCTYPE HTML PUBLIC”-//W3C//DTD HTML 4.01//EN”
”http://www.w3.org/TR/html4/strict.dtd”>
<html lang=”en”>
<head>
<script type=”text/javascript”src=” ja/prototype.js”/>
<script type=”text/javascript”src=” ja/ajax.js”/>
<title>AJAX,Web2.0example</title>
<link rel=”stylesheet ”type=” text/css”href=” css/style.css”/>
</head>
<body>
<div id=”navhover”>
<img src=”img/hammer.jpg ”alt=”Builders ”>
<img src=”img/lightbulb.jpg ”alt=”Electricians ”>
<img src=”img/wrentch.jpg ”alt=”Pumbers”>
<img src=”img/taxi.jpg ”alt=”Taxis”>
</div>
<div id=”nav”>
<ul>
<li><a href=”♯”onclock=”getInfo(1);”id=”nav1”
title=”Electricians ”><span>Builders</span></a></li>
<li><a href=”♯”onclock=”getInfo(2);”id=”nav”
title=”Plumbers ”><span> Electricians </span></a></li>
<li><a href=”♯”onclock=”getInfo(3);”id=”nav3”
title=” Builders”><span> Plumbers </span></a></li>
</ul>
<ul>
<li><img src=”img/taxi.jpg ”onclick=’getinfo(4);’id=”img ”
name=”img ”style=”cursor:hand ”></li>
</ul >
</div >
<div id=”rusult”>Search results…</div>
</body>
</html>
この例示的な実施形態で提供される実際のコードは、開示される技術スキームを例証することを意図するに過ぎず、技術スキームの制限として解釈されるべきでないことを留意すべきである。
【００４３】
Ｓ２０２  ウェブページコードのＪａｖａＳｃｒｉｐｔ情報を取得する。
【００４４】
Ｓ２０２の記述によれば、上記コードは、直接埋め込まれたＪａｖａＳｃｒｉｐｔコードを持たないことが見出される。しかし、ＪａｖａＳｃｒｉｐｔファイル、すなわち、<head>部内に位置する２つのファイル“prototype.js”および “ajax.js”が参照される。これらの２つのファイルのパスおよびファイル名などの情報が記憶され得る。
【００４５】
Ｓ２０３  ウェブページコードにおけるＡｊａｘコールを含む関数を確定するためにＪａｖａＳｃｒｉｐｔ情報を解析する。
【００４６】
Ｓ２０３ａは、Ｓ２０２にて取得されたこれらの２つのＪａｖａＳｃｒｉｐｔファイルのファイル名に基づいて、“prototype.js”がフレームワークドキュメントであり、 “ajax.js”が非フレームワークドキュメントであると判定し得る。
【００４７】
参照される２つのＪａｖａＳｃｒｉｐｔファイルのタイプに基づいて、Ｓ２０３Ｂは、Ａｊａｘコールが存在する場合、２つの関連するＡｊａｘ属性値がおそらくウェブページ内に存在することを知る。第１のタイプは、“new Ajax.Request”としてその属性値を有するプロトタイプフレームワークで提供されるＡｊａｘ呼び出しメッソドである。
【００４８】
別のタイプは、ＪａｖａＳｃｒｉｐｔフレームワークが使用されない状況に対応する。各属性値は、
“new ActiveObject(“Microsoft.XMLHTTP”)”
である。
【００４９】
非フレームワークドキュメントである“ajax.js”が、ここでさらに解析される。“ajax.js”のコードのコンテンツが次の通りであると仮定する。
Function getinfo(id){
Var xmlhttp;
try{
xmlhttp=new XMLHttpRequest();
}catch(e){
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
}
xmlhttp.onreadystatechange=function(){
if(xmlhtt.readyState=1){
document.getElementById(’results’).innerHTML=’loading…’;
}
if(xmlhtt.readyState=4){
var response=xmlhttp.responseText;
document.getElementById(’results’).innerHTML=response;
}
}
xmlhttp.open(’get ’, ’data.jsp?company=’+id,true)
xmlhttp.send(”company=”+id);
}
function getDate()
{
var date=new Date();
var year=date.getYear();
var month=date.getMonth()+1;
var date=date.get Day();
return
year+” ”+(month>=10?month(”0 ”+ ” ”+month))+ ” ”+(day>=10?day: (”0 ”+ ” ”+day));
}
function getDate Time()
{
var date=new Date();
var localString=date.toLocaleString();
return LocaleString;
}
function sameToBilling(obj)
{
var my=new Ajax.Request(url,
{
method: ’get’,
parameters:pars,
asynchronous:true,
onComplete:showResponse
});
}
【００５０】
４つの関数が、“ajax.js”内で定義され、それらは、それぞれgetInfo()、getData()、getDateTime()、およびsameToBilling()である。さらに、属性値である“new ActiveXObject(“Microsoft.XMLHTTP”) ”および“new Ajax.Request ”が、getInfo()関数および sameToBilling()関数内にそれぞれ現れる。結果として、getInfo()および sameToBilling()は、Ａｊａｘコールを含む関数であることを判定することができる。
【００５１】
Ｓ２０３ｃは、getInfo()が、集合Ａ（ウェブページコードで使用される関数の）と集合Ｂ（参照されるＪａｖａＳｃｒｉｐｔファイル内にＡｊａｘコールを含む関数の）の重なりに基づいて、ウェブページコード内にＡｊａｘコールを含む関数であると判定し得る。他方、sameToBilling()関数は、ウェブページ内でコールされなかったため、さらに処理されない可能性がある。
【００５２】
Ｓ２０４  ウェブページコンテンツを入手するために、Ａｊａｘコールを含む関数を起動させる。
【００５３】
getInfo()は、それにより生成されるウェブページコンテンツを入手するために、onclick（すなわち、マウスクリック）操作をシミュレートすることによって起動される。
【００５４】
上記の例示的な実施形態に示すように、本開示で提供される技術スキームは、ウェブページコードおよびＡｊａｘ属性値を解析することによって、どの関数（参照されたファイル内で定義される）がＡｊａｘコールを含むかを判定する。そのスコープ内で、関連するウェブページ内で実際にコールされる関数が見出される。さらに、ウェブページコンテンツは、これらの関数の実行をシミュレートすることによって入手され、そうすることにより、ウェブページコンテンツに関連しない関数の実行を回避する。結果として、動的ウェブページコンテンツを取得する効率が改善される。
【００５５】
上記例示的な方法に対応して、本開示の例示的な実施形態はさらに、Ａｊａｘウェブページコンテンツを取得するシステムを提供する。図３に示すように、システムは、
ウェブページコードの情報を入手するために使用されるウェブページコンテンツ収集ユニット３１０と、
ウェブページコードのＪａｖａＳｃｒｉｐｔ情報を取得するために使用されるスクリプト取得ユニット３２０と、
ウェブページコードにおけるＡｊａｘコールを含む関数を確定するために、ＪａｖａＳｃｒｉｐｔ情報を解析するために使用されるスクリプト解析ユニット３３０と、
ウェブページコンテンツを入手するために、Ａｊａｘコールを含む関数を起動させるために使用されるウェブページコンテンツ収集ユニット３４０とを含む。
【００５６】
ＪａｖａＳｃｒｉｐｔ情報は、ＪａｖａＳｃｒｉｐｔファイルおよび／またはＪａｖａＳｃｒｉｐｔコードを含んでもよい。
【００５７】
図４に示すように、スクリプト取得ユニット３２０は、
ウェブページコード内でＪａｖａＳｃｒｉｐｔタグをチェックするために使用されるチェック用サブユニット３２１と、
ＪａｖａＳｃｒｉｐｔタグの後に位置するＪａｖａＳｃｒｉｐｔ情報が、ＪａｖａＳｃｒｉｐｔコードに対応するとき使用される、ＪａｖａＳｃｒｉｐｔコードを取得し、取得されたＪａｖａＳｃｒｉｐｔコードをＪａｖａＳｃｒｉｐｔファイルに記憶する第１の取得用サブユニット３２２と、
ＪａｖａＳｃｒｉｐｔタグの後に位置するＪａｖａＳｃｒｉｐｔ情報が、ＪａｖａＳｃｒｉｐｔファイルに対応するとき使用される、ＪａｖａＳｃｒｉｐｔファイルの記憶パスおよびファイル名を取得する第２の取得用サブユニット３２３とを含んでもよい。
【００５８】
図５に示すように、スクリプト解析ユニット３３０は、
Ａｊａｘコールを含み、Ａｊａｘ属性値に基づいて前記ＪａｖａＳｃｒｉｐｔファイル内で定義される関数を確定するために使用される第１の確定用サブユニット３３１であって、Ａｊａｘ属性値は、ある関数内でＡｊａｘコールの存在を示すコードセグメントを指す、第１の確定用サブユニット３３１と、
第１の確定用サブユニット３３１によって確定された関数の中から、ウェブページコードのおけるＡｊａｘコールを含む関数をさらに確定するために使用される第２の確定用サブユニット３３２とを含む。
【００５９】
Ａｊａｘ属性値は、あるタイプのＪａｖａＳｃｒｉｐｔフレームワークを使用したＡｊａｘコールに対応する属性値、および／または、いかなるタイプのＪａｖａＳｃｒｉｐｔフレームワークをも使用することなくＡｊａｘコールに対応する属性値を含んでもよい。
【００６０】
第１の確定用サブユニット３３１は、Ａｊａｘコールを含み、ウェブページ内で参照される非ＪａｖａＳｃｒｉｐｔフレームワークドキュメント内で定義される関数を確定するために使用され得る。
【００６１】
ウェブページコンテンツ収集ユニット３４０は、ユーザ操作をシミュレートすることによって、ウェブページコンテンツを入手するために、Ａｊａｘコールを含む関数を起動させるために使用されてもよい。
【００６２】
例示的な方法との基本的な対応のために、例示的なシステムは、比較的簡単な方法で説明されている。例示的なシステムの詳細は、例示的な方法の関連部分に対して参照することができる。上記例示的なシステムの説明は、例証を意図されるに過ぎない。本明細書で別個の要素として述べるユニットは、物理的な意味で別個であっても、なくてもよい。ユニットによって示す要素は、物理的ユニットであっても、なくてもよい、すなわち、１つの場所に位置してもよく、または、複数のネットワークユニット間分散されてもよい。実際のニーズに基づいて、例示的な実施形態の目標は、モジュールの複数の部分または全てを選択することによって達成され得る。当業者は、開示されるシステムを理解し、革新的な作用がない状態で実現することができる。
【００６３】
説明のために、上記システムは、別々に述べられた種々のユニットに分割された。種々のユニットの機能は、開示されるシステムを実現するとき、１つまたは複数のソフトウェアおよび／またはハードウェアで実現されてもよい。
【００６４】
上述した例示的な実施形態から、開示される方法およびシステムは、ソフトウェアおよび汎用ハードウェアプラットフォームを使用して実現されてもよいことを当業者は明確に理解することができる。この理解に基づいて、本開示の技術スキームまたは既存の技術に寄与する部分は、ＲＯＭ／ＲＡＭ、ディスク、およびドライブなどの記憶媒体に記憶されるソフトウェア製品の形態で実現されてもよい。ソフトウェアは、コンピューティングデバイス（たとえば、パーソナルコンピュータ、サーバ、またはネットワークデバイス）が、種々の例示的な実施形態または本開示の例示的な実施形態の一定の部分に述べる方法を実行するための命令を含む。
【００６５】
上記は、本開示の少数の例示的な実施形態に過ぎない。当業者は、本開示の趣旨および範囲から逸脱することなく、多くの異なる方法で本開示を変更するかまたは修正することができることが理解される。これらの変更および修正は、本開示の特許請求の範囲およびその均等物内に入ると考えられるべきである。
【図１】
0005990605.tif 000002
【図２】
0005990605.tif 000003
【図３】
0005990605.tif 000004
【図４】
0005990605.tif 000005
【図５】
0005990605.tif 000006