(57)【要約】ウェブクローリングのためのシステムと方法。方法は、１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を備えた要求を受信することに応答して、１つまたは複数のＵＲＬｓをシードデータベースに記憶するステップ（７２０）を含む。方法はまた、実行するのを待機している第１のカウントのタスクに基づいてシードデータベースから、少なくとも１つのＵＲＬを選択するステップ（７４０）を含む。方法はまた、少なくとも１つの選択されたＵＲＬの各々に基づいて、タスクを生成するステップ（７５０）を含む。方法は、また、タスクを対応するクローラモジュールにディスパッチして、前記クローラモジュールに、前記タスクに関連づけられたＵＲＬに従って、少なくとも１つのウェブページをフェッチさせるステップ（７６０）を含む。方法は、また、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページのエレメント情報を抽出するステップ（７７０）を含む。方法はさらに、エレメント情報をファイルシステムに記憶するステップ（７８０）を含む。【選択図】図４
2021515950.tif 000002
【特許請求の範囲】
【請求項１】
ユーザにより提出されたクローリングジョブを取得するためにユーザインタフェースを提供するように構成されたアプリゲーションプログラムインタフェース（ＡＰＩ）と、
ＡＰＩと通信し、前記クローリングジョブに関連づけられた、１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を記憶するように構成された、シードデータベースと、
前記シードデータベースと通信し、前記１つまたは複数のＵＲＬｓを取得し、前記１つまたは複数のＵＲＬｓの各々を、対応するクローラモジュールにディスパッチするように構成されたジョブジェネレータであって、前記ジョブジェネレータと通信する前記クローラモジュールは、前記１つまたは複数のＵＲＬｓに基づいて、ウェブサイトデータおよび／またはウェブページデータをフェッチするように構成された、ジョブジェネレータと、
を備えた、クラウドコンピューティングのためのシステム。
【請求項２】
前記クローラモジュールは、スパイダークローラモジュールまたはクロームクローラモジュールの少なくとも１つを備え、前記クローラモジュールは、ウェブページデータをフェッチする前に、レンダリングされたウェブページデータおよび／またはユーザ定義されたページに、JavaScriptレンダリングオペレーションを実行するように構成された、請求項１に記載のシステム。
【請求項３】
前記クローラモジュールおよび前記シードデータベースと通信し、
前記クローラモジュールによりフェッチされた、前記ウェブサイトデータおよび／または前記ウェブページデータを解析することにより、前記クローリングジョブのリンククロール深度を決定し、
前記リンククロール深度に基づいて、前記クローリングジョブを更新し、
前記更新されたクローリングジョブを前記シードデータベースにフィードバックする、
ように構成されたリンクディスカバーモジュールをさらに備えた、請求項１に記載のシステム。
【請求項４】
前記リンクディスカバーモジュールは、
前記クローラモジュールによりフェッチされた前記ウェブサイトデータの第１のコピーファイルおよび／または前記ウェブページデータの第２のコピーファイルを、リアルタイムで解析することにより、前記クローリングジョブの前記リンククロール深度を決定し、
前記リンククロール深度に基づいて前記クローリングジョブを更新し、
前記更新されたクローリングジョブをリアルタイムで、前記シードデータベースにフィードバックする、
ように構成された第１のリンク生成ロジックモジュールを備えた、請求項３に記載のシステム。
【請求項５】
前記１つまたは複数のクローラモジュールと通信し、プリセットされたリストに従って、前記フェッチしたウェブサイトデータ、および／またはフェッチしたウェブページデータに関連づけられたエレメント情報を分散的に記憶するように構成された１つ又は複数の分散ストレージノードをさらに備えた、請求項４に記載のシステム。
【請求項６】
前記リンクディスカバーモジュールは、
前記１つ又は複数の分散ストレージノードと通信し、
所定のスケジュールに従うオフラインで、前記１つまたは複数の分散ストレージノードに記憶された、前記エレメント情報に対応する１つまたは複数の特徴値を決定し、
前記エレメント情報に対応する前記１つまたは複数の特徴値に基づいて、前記リンククロール深度を決定し、
前記リンククロール深度に基づいて、前記クローリングジョブを更新し、
前記更新されたクローリングジョブを、前記シードデータベースにフィードバックする、
ように構成された第２のリンク生成ロジックモジュールをさらに備えた、請求項５に記載のシステム。
【請求項７】
前記１つまたは複数の特徴値は、フレームパラメータ、識別パラメータ、ラベルパラメータ、タイプパラメータ、テキストパラメータ、またはインデックスパラメータの少なくとも１つを備える、請求項６に記載のシステム。
【請求項８】
前記１つまたは複数の分散ストレージノードと通信し、
前記エレメント情報を、１つまたは複数のプリセットされた解析アルゴリズムを用いて指定されたフォーマットに変換し、
前記エレメント情報を、前記指定されたフォーマットで前記１つまたは複数の分散ストレージノードに記憶するように構成された、解析モジュールをさらに備えた、請求項７に記載のシステム。
【請求項９】
前記解析モジュールは、前記ＡＰＩと通信し、前記ＡＰＩはさらに、前記ユーザにより提出された、１つまたは複数の解析アルゴリズムを取得するように構成され、前記１つまたは複数の提出された解析アルゴリズムは、前記解析モジュールに記憶された、前記１つまたは複数のプリセットされた解析アルゴリズムとして、指定される、請求項８に記載のシステム。
【請求項１０】
前記クローラモジュールと通信し、
ハイパーテキストトランフファープロトコル（ＨＴＴＰｓ）で、１つまたは複数のプロキシを収集して検証し、
前記クローラモジュールと協働して、前記１つまたは複数のＵＲＬｓに基づいて、ウェブサイトデータおよび／またはウェブページデータをフェッチする、ように構成されたプロキシモジュールをさらに備えた、請求項２に記載のシステム。
【請求項１１】
前記プロキシモジュールはさらに、クロームクローラモジュールのためのクローリング圧力制御を提供するように構成された、請求項１０に記載のシステム。
【請求項１２】
クローリングのために前記クロームクローラモジュールがサポートする少なくとも１つのＵＲＬは、ユーザ定義されたロジックアルゴリズムを備える、請求項１１に記載のシステム。
【請求項１３】
前記クローラモジュールと通信し、同時フェッチ要求のプリセットされたカウントおよび／またはプリセットされたクローリング頻度に従って、前記クローラモジュールを制御してウェブサイトデータおよび／またはウェブページデータをフェッチするように構成された、クローリング圧力制御モジュールをさらに備えた、請求項１乃至１２のいずれか一項に記載のシステム。
【請求項１４】
前記クラウドコンピューティングのためのシステムは、サービスとしてのプラットフォーム（ＰＡＡＳ）に基づいて、運用および保守プラットフォーム上で実行される、請求項１乃至１２のいずれか一項に記載のシステム。
【請求項１５】
前記運用および保守プラットフォームは、前記クローリングジョブをインプリメントするためのコンテナを開始するように構成された、請求項１４に記載のシステム。
【請求項１６】
前記運用および保守プラットフォームはさらに、前記コンテナを動的に管理するように構成された、請求項１５に記載のシステム。
【請求項１７】
前記クラウドコンピューティングのためのシステムは、前記クローリングジョブに関連するコンフィグ情報を含むコンフィグファイルを記憶するように構成された、ストレージシステムと通信するかまたは含む、請求項１に記載のシステム。
【請求項１８】
クラウドコンピューティングのためのシステムにおいて、
命令のセットを含む少なくとも１つのストレージ媒体と、
前記少なくとも１つのストレージ媒体と通信する少なくとも１つのプロセッサであって、前記命令のセットを実行すると、前記少なくとも１つのプロセッサは、前記システムに、
１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を備えた要求を受信することに応答して、前記１つまたは複数のＵＲＬｓをシードデータベースに記憶させ、
実行されるために待機している第１のカウントのタスクに基づいて、前記シードデータベースから少なくとも１つのＵＲＬを選択させ、
前記少なくとも１つの選択されたＵＲＬの各々に基づいてタスクを生成させ、
前記タスクを対応するクローラモジュールにディスパッチし、前記タスクに関連づけられたＵＲＬに従って、前記クローラモジュールに少なくとも１つのウェブページをフェッチさせ、
前記少なくとも１つのウェブページを解析することにより、前記少なくとも１つのウェブページのエレメント情報を抽出させ、
前記エレメント情報をファイルシステムに記憶させる、
ように構成された少なくとも１つのプロセッサと、
を備えた、クラウドコンピューティングのためのシステム。
【請求項１９】
ウェブクローリングの要求を受信するために、前記少なくとも１つのプロセッサは、前記システムに、
アプリケーションプログラムインタフェース（ＡＰＩ）を介して、ユーザにより開始されたウェブクローリングの要求を受信させるように構成される、請求項１８に記載のシステム。
【請求項２０】
実行されるために待機している第１のカウントのタスクに基づいて、前記シードデータベースから少なくとも１つのＵＲＬを選択するために、前記少なくとも１つのプロセッサは、前記システムに、
実行されるために待機している前記第１のカウントのタスクを識別させ、
シードデータベース内の第２のカウントのＵＲＬｓを識別させ、
前記第１のカウントまたは前記第２のカウントに基づいて、ＵＲＬを選択するかどうかを判断させ、
前記第１のカウントまたは前記第２のカウントの少なくとも１つが、１つまたは複数の基準を満足することに応答して、前記少なくとも１つのＵＲＬを前記シードデータベースから選択させ、
ように構成される、請求項１８に記載のシステム。
【請求項２１】
前記シードデータベースから選択された前記少なくとも１つのＵＲＬのカウントは、前記第１のカウントまたは前記第２のカウントの少なくとも１つに関連する、請求項２０に記載のシステム。
【請求項２２】
前記シードデータベースから前記少なくとも１つのＵＲＬを選択するために、前記少なくとも１つのプロセッサは、前記システムに、
前記シードデータベース内のＵＲＬｓの優先度に基づいて、前記シードデータベースから前記少なくとも１つのＵＲＬを選択させるように構成された、請求項２０に記載のシステム。
【請求項２３】
前記少なくとも１つのプロセッサは、前記システムに、
前記要求を解析することによりコンフィグファイルを生成させ、前記コンフィグファイルは、前記要求に関連づけられた１または複数のタスクに関連するコンフィグ情報を備え、
前記コンフィグファイルをストレージシステムに記憶させる、
ように構成された、請求項１８に記載のシステム。
【請求項２４】
各タスクを、対応するクローラモジュールにディスパッチするために、前記少なくとも１つのプロセッサは、前記システムに、
前記タスクに関連付けられたコンフィグ情報に基づいて、前記対応するクローラモジュールを決定させ、
前記タスクを前記対応するクローラモジュールにディスパッチさせる、
ように構成された、請求項２３に記載のシステム。
【請求項２５】
前記対応するクローラモジュールは、スパイダークローラモジュールまたはクロームクローラモジュールの１つである、請求項２４に記載のシステム。
【請求項２６】
前記少なくとも１つのウェブページを解析することにより、前記少なくとも１つのウェブページのエレメント情報を抽出するために、前記少なくとも１つのプロセッサは、前記システムに、
前記タスクに関連づけられたコンフィグ情報に従って、前記少なくとも１つのウェブページを解析することにより、前記少なくとも１つのウェブページのエレメント情報を抽出させるように構成される、請求項２３に記載のシステム。
【請求項２７】
前記少なくとも１つのプロセッサは、前記システムに、
前記タスクに関連づけられたコンフィグ情報に従って、前記少なくとも１つのウェブページを解析することにより、前記少なくとも１つのウェブページから、１つ又は複数のリンクしたＵＲＬｓを抽出させ、
前記１つまたは複数の抽出されたＵＲＬｓを前記シードデータベースに記憶させる、ように構成された、請求項２３に記載のシステム。
【請求項２８】
前記少なくとも１つのウェブページから１つまたは複数のリンクしたＵＲＬｓを抽出するために、前記少なくとも１つのプロセッサは、前記システムに、
前記少なくとも１つのウェブページをメッセージキューにプッシュさせ、
前記メッセージキューから、前記少なくとも１つのウェブページをポップさせ、前記少なくとも１つのウェブページから、前記１つまたは複数のリンクしたＵＲＬｓを抽出させる、
ように構成された、請求項２７に記載のシステム。
【請求項２９】
前記少なくとも１つのウェブページから、１つまたは複数のＵＲＬｓを抽出するために、前記少なくとも１つのプロセッサは、前記システムに、
前記少なくとも１つのウェブページを前記ファイルシステムに記憶させ、
前記ファイルシステムから、オフラインで、前記少なくとも１つのウェブページを取得させ、
前記少なくとも１つのウェブページから、前記１つまたは複数のリンクしたＵＲＬｓを抽出させる、
ように構成された請求項２７に記載のシステム。
【請求項３０】
前記タスクに関連づけられたＵＲＬに従って、少なくとも１つのウェブページをフェッチするために、前記少なくとも１つのプロセッサは、前記システムに、
プロキシモジュールの１つまたは複数のプロキシを用いて、前記タスクに関連づけられた前記ＵＲＬに従う前記少なくとも１つのウェブページをフェッチさせ、各プロキシは、インターネットプロトコル（ＩＰ）アドレスを有する、ように構成された、請求項１８に記載のシステム。
【請求項３１】
前記少なくとも１つのプロセッサは、前記システムに、
プロキシモジュール内の有効ＩＰアドレスのカウントに基づいて、同時フェッチ要求のカウントまたはクローリング頻度を調節させるように構成された、請求項３０に記載のシステム。
【請求項３２】
前記少なくとも１つのプロセッサは前記システムに、
前記要求に関連づけられた１つまたは複数のタスクをインプリメントするためのコンテナを開始させる、ように構成された請求項１８に記載のシステム。
【請求項３３】
前記ファイルシステムは、Ｈａｄｏｏｐ分散ファイルシステム（ＨＤＦＳ）である、請求項１８に記載のシステム。
【請求項３４】
ウェブクローリングのための１つまたは複数のプロセッサと、１つまたは複数のストレージデバイスを有するコンピューティングデバイスにインプリメントされた方法において、
１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を備えた要求を受信することに応答して、前記１つまたは複数のＵＲＬｓを、シードデータベースに記憶するステップと、
実行されるために待機している第１のカウントのタスクに基づいて、前記シードデータベースから少なくとも１つのＵＲＬを選択するステップと、
前記少なくとも１つの選択されたＵＲＬの各々に基づいて、タスクを生成するステップと、
前記タスクを対応するクローラモジュールにディスパッチし、前記クローラモジュールに、前記タスクに関連づけられたＵＲＬに従って、少なくとも１つのウェブページをフェッチさせるステップと、
前記少なくとも１つのウェブページを解析して、前記少なくとも１つのウェブページのエレメント情報を抽出するステップと、
前記エレメント情報をファイルシステムに記憶するステップと、
を備えた、方法。
【請求項３５】
前記ウェブクローリングの要求を受信するステップは、
アプリケーションプログラミングインタフェース（ＡＰＩ）を介して、ユーザにより開始されたウェブクローリングの要求を受信するステップを備えた、請求項３４に記載の方法。
【請求項３６】
前記実行されるために待機している第１のカウントのタスクに基づいて、前記シードデータベースから少なくとも１つのＵＲＬを選択するステップは、
実行されるために待機している前記第１のカウントのタスクを識別するステップと、
前記シードデータベース内の第２のカウントのＵＲＬｓを識別するステップと、
前記第１のカウントまたは前記第２のカウントに基づいて、ＵＲＬを選択するかどうかを決定するステップと、
前記第１のカウントまたは前記第２のカウントの少なくとも１つが１つまたは複数の基準を満足するとの決定に応答して、前記シードデータベースから前記少なくとも１つのＵＲＬを選択するステップと、
を備えた、請求項３４に記載の方法。
【請求項３７】
前記シードデータベースから選択された、少なくとも１つのＵＲＬのカウントは、前記第１のカウント、または前記第２のカウントの少なくとも１つに関連する、請求項３６に記載の方法。
【請求項３８】
前記少なくとも１つのＵＲＬを前記シードデータベースから選択するステップは、
前記シードデータベース内のＵＲＬｓの優先度に基づいて、前記シードデータベースから前記少なくとも１つのＵＲＬを選択するステップを備えた、請求項３６に記載の方法。
【請求項３９】
前記要求を解析することによりコンフィグファイルを生成するステップであって、前記コンフィグファイルは、前記要求に関連づけられた１つまたは複数のタスクに関するコンフィグ情報を備えた、ステップと、
前記コンフィグファイルをストレージシステムに記憶するステップと、
をさらに備えた、請求項３４に記載の方法。
【請求項４０】
前記各タスクを対応するモジュールにディスパッチするステップは、
前記タスクに関連づけられたコンフィグ情報に基づいて、前記対応するクローラモジュールを決定するステップと、
前記タスクを前記対応するクローラモジュールにディスパッチするステップと、
を備えた、請求項３９に記載の方法。
【請求項４１】
前記対応するクローラモジュールは、スパイダークローラモジュールまたはクロームクローラモジュールの１つである、請求項４０に記載の方法。
【請求項４２】
前記少なくとも１つのウェブページを解析することにより、前記少なくとも１つのウェブページのエレメント情報を抽出するステップは、
前記タスクに関連づけられたコンフィグ情報に従って、前記少なくとも１つのウェブページを解析することにより、前記少なくとも１つのウェブページのエレメント情報を抽出するステップを備えた、請求項３９に記載の方法。
【請求項４３】
前記タスクに関連づけられたコンフィグ情報に従って、前記少なくとも１つのウェブページを解析することにより、前記少なくとも１つのウェブページから１つまたは複数のリンクしたＵＲＬｓを抽出するステップと、
前記タスクに関連づけられたコンフィグ情報に従って、前記少なくとも１つのウェブページを解析することにより、前記少なくとも１つのウェブページから１つまたは複数のリンクしたＵＲＬｓを抽出するステップと、
前記１つまたは複数の抽出したリンクしたＵＲＬｓを前記シードデータベースに記憶するステップと、を備えた、請求項３９に記載の方法。
【請求項４４】
前記少なくとも１つのウェブページから、１つまたは複数のリンクしたＵＲＬｓを抽出するステップは、
前記少なくとも１つのウェブぺージをメッセージキューにプッシュするステップと、
前記メッセージキューから、前記少なくとも１つのウェブページをポップするステップと、
前記少なくとも１つのウェブページから、前記１つまたは複数のＵＲＬｓを抽出するステップと、
を備えた、請求項４３に記載の方法。
【請求項４５】
前記少なくとも１つのウェブページから、１つまたは複数のリンクしたＵＲＬｓを抽出するステップは、
前記少なくとも１つのウェブページを、前記ファイルシステムに記憶するステップと、
前記ファイルシステムから、オフラインで、前記少なくとも１つのウェブページを取得するステップと、
前記少なくとも１つのウェブページから、前記１つまたは複数のリンクしたＵＲＬを抽出するステップと、
を備えた、請求項４３に記載の方法。
【請求項４６】
前記タスクに関連づけられたＵＲＬに従って、少なくとも１つのウェブページをフェッチするステップは、
プロキシモジュールの１つまたは複数のプロキシを用いて、前記タスクに関連づけられた前記ＵＲＬに従って、前記少なくとも１つのウェブページをフェッチするステップを備え、各プロキシは、インターネットプロトコル（ＩＰ）アドレスを有する、請求項３４に記載の方法。
【請求項４７】
有効ＩＰアドレスのカウントに基づいて、前記プロキシモジュール内の同時フェッチ要求のカウント、またはクローリング頻度を調整するステップをさらに備えた、請求項４６に記載の方法。
【請求項４８】
前記要求に関連づけられた１つまたは複数のタスクをインプリメントするためのコンテナを開始するステップをさらに備えた、請求項３４に記載の方法。
【請求項４９】
前記ファイルシステムは、Ｈａｄｏｏｐ分散ファイルシステム（ＨＤＦＳ）である、請求項３４に記載の方法。
【請求項５０】
ウェブクローリングのための少なくとも１つの命令セットを備え、コンピューティングデバイスの１つまたは複数のプロセッサにより実行されると、前記少なくとも１つの命令セットは、前記コンピューティングデバイスに方法を実行させる非一時的コンピュータ可読媒体において、前記方法は、
１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を備えた要求を受信することに応答して、前記１つまたは複数のＵＲＬｓをシードデータベースに記憶することと、
実行されるために待機している第１のカウントのタスクに基づいて、前記シードデータベースから、少なくとも１つのＵＲＬを選択することと、
前記少なくとも１つの選択されたＵＲＬの各々に基づいてタスクを生成することと、
前記タスクを対応するクローラモジュールにディスパッチして、前記クローラモジュールに、前記タスクに関連づけられたＵＲＬに従って、少なくとも１つのウェブページをフェッチすることと、
前記少なくとも１つのウェブページを解析することにより、前記少なくとも１つのウェブページのエレメント情報を抽出することと、
前記エレメント情報をファイルシステムに記憶することと、を備えた、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
この出願は、２０１８年３月１４日に出願された中国特許出願第２０１８１０２０７４９８．７号の優先権を主張し、参照することによりその内容がここに組み込まれる。
【背景技術】
【０００２】
この開示は、一般にネットワーク技術に関し、特にクラウドコンピューティングのためのシステムおよび方法に関する。
【０００３】
ウェブクローリング（Web Crawling）（ウェブデータクローリングまたはウェブサイトクローリングとしても知られる）は、ウェブからデータを取得し、および／または取得した非構造化データを構造化データに変換することを指す。構造化データは、データを、さらなるデータ解析のためにローカルコンピュータまたはデータベースに効率的に記憶することができる。
【０００４】
既存のウェブクローリングは、以下の技術的制限のうちの少なくとも１つを有することができる。
（１）既存のウェブクローリングを用いてウェブページ（複数の場合もある）のみをフェッチすることができるか、あるいは新しいリンクをフェッチする単一能力のみを実現することができる。
（２）既存のウェブクローリングを用いて、ハイパーテキストマークアップランゲージ（ＨＴＭＬ）ウエブページ（複数の場合もある）のみをフェッチすることができ、動的ウェブページ（複数の場合もある）の有効データは、フェッチすることはできない。
（３）既存のウェブクローリングは、分散することはできず、単一マシンまたは単一の同種のクラスタ、従って、データ取得および／またはデータ解析の効率は、相対的に低くなる可能性がある。
（４）クローリング動作に関するクローリング圧力制御が欠如しているので、ターゲットウェブサイト（複数の場合もある）により容易に発見されかつブロックされる可能性がある。
（５）国内（例えば、中国）においてオペレータ（複数の場合もある）により提供されるインターネットプロトコル（ＩＰ）アドレス（複数の場合もある）の場合、ターゲットウェブサイト（複数の場合もある）により容易にブロックされる可能性がある。
（６）異なる会社および／または異なる事業分野のクローリングシステムに基づいてプラットフォームを構築することは殆ど不可能であり、従って、クローリングシステムの独立した保守および／または開発のコストは、極めて高くなる。それゆえ、安全で、効率が良く、費用効率の高いウェブクローリングのシステムおよび方法を提供することが望ましい。
【発明の概要】
【０００５】
この開示の一態様によれば、クラウドコンピューティングのためのシステムは、アプリケーションプログラム（ＡＰＩ）、シード（seed）データベース、ジョブジェネレータ、およびクローラ（crawler）モジュールを含むことができる。アプリケーションプログラムインタフェース（ＡＰＩ）は、ユーザにより提出されたクローリングジョブを取得するためのユーザインタフェースを提供するように構成することができる。ＡＰＩと通信しているシードデータベースは、クローリングジョブに関連付けられた１つまたは複数のユニフォーム（ＵＲＬｓ）を記憶するように構成することができる。シードデータベースと通信しているジョブジェネレータは、１つまたは複数のＵＲＬｓを取得し、１つまたは複数のＵＲＬｓの各々を対応するクローリングモジュールにディスパッチ（dispatch）するように構成することができる。ジョブジェネレータと通信しているクローラモジュールは、１つまたは複数のＵＲＬｓに基づいてウェブサイトデータおよび／またはウェブページデータをフェッチするように構成される。
【０００６】
いくつかの実施形態において、クローラモジュールは、スパイダークローラモジュール（spider crawler module）又はクロームクローラモジュール（chrome crawler module）の少なくとも１つを含むことができる。クロームクローラモジュールは、レンダリングされたウェブページおよび／またはウェブページデータをフェッチする前のユーザ定義ページにJavaScript（登録商標）レンダリング動作を実行するように構成することができる。
【０００７】
いくつかの実施形態において、システムは、クローラモジュールおよびシードデータベースと通信しているリンクディスカバーモジュール（link discover module）を含むことができる。リンクディスカバーモジュールは、ウェブサイトデータおよび／またはクローリングモジュールによりフェッチされたウェブページデータを解析することによりクローリングジョブのリンククロール深度（link crawl depth）を決定するように構成することができる。リンクディスカバーモジュールは、リンククロール深度に基づいてクローリングジョブを更新するように構成することができる。リンクディスカバーモジュールは、更新されたクローリングジョブをシードデータベースにフィードバックするように構成することができる。
【０００８】
いくつかの実施形態において、リンクディスカバーモジュールは、第１のリンク生成ロジックモジュールを含むことができる。第１のリンク生成ロジックモジュールは、クローラモジュールによりフェッチされたウェブサイトデータの第１のコピーファイルおよび／またはウェブページデータの第２のコピーファイルをリアルタイムで解析することによりクロールジョブのリンククロール深度を決定するように構成することができる。第１のリンク生成ロジックモジュールは、リンククロール深度に基づいてクローリングジョブを更新するように構成することができる。第１のリンク生成ロジックモジュールは、更新されたクローリングジョブをシードデータベースにリアルタイムでフィードバックするように構成することができる。
【０００９】
いくつかの実施形態において、システムは、プリセットされたリストに従って、フェッチされたウェブサイトデータおよび／またはフェッチされたウェブページに関連づけられたエレメント情報を、分散して記憶するように構成された１つまたは複数のクローラモジュールと通信している、１つまたは複数の分散ストレージノードを含むことができる。
【００１０】
いくつかの実施形態において、リンクディスカバーモジュールは、１つまたは複数の分散ストレージノードと通信している、第２のリンク生成ロジックモジュールを含むことができる。第２のリンク生成ロジックモジュールは、所定のスケジュールに従うオフラインで、１つまたは複数の分散ストレージノードに記憶されたエレメント情報に対応する、１つまたは複数の特徴値を決定するように構成することができる。第２のリンク生成ロジックモジュールは、エレメント情報に従う、１つまたは複数の特徴値に基づいて、前記リンククロール深度を決定するように構成することができる。第２のリンク生成ロジックモジュールは、リンククロール深度に基づいて、クローリングジョブを更新するように構成することができる。第２のリンク生成ロジックモジュールは、更新されたクローリングジョブを、シードデータベースにフィードバックするように構成することができる。
【００１１】
いくつかの実施形態において、１つまたは複数の特徴値は、フレームパラメータ、識別パラメータ、ラベルパラメータ、タイプパラメータ、テキストパラメータ、またはインデックスパラメータの少なくとも１つを含むことができる。いくつかの実施形態において、システムは、１つまたは複数の分散ストレージノードと通信している解析モジュールを含むことができる。解析モジュールは、１つまたは複数のプリセットされた解析アルゴリズムを用いて、エレメント情報を、特定のフォーマットに変換するように構成することができる。解析モジュールは、特定の形態のエレメント情報を、１つまたは複数の分散ストレージノードに記憶するように構成することができる。
【００１２】
いくつかの実施形態において、解析モジュールは、ＡＰＩと通信することができる。ＡＰＩは、さらにユーザにより提出された１つまたは複数の解析アルゴリズムを取得するように構成することができる。１つまたは複数の提出された解析アルゴリズムは、解析モジュールに記憶された１つまたは複数のプリセットされた解析アルゴリズムとして指定することができる。
【００１３】
いくつかの実施形態において、システムは、クローラモジュールと通信しているプロキシモジュールを含むことができる。プロキシモジュールは、ハイパーテキスト転送プロトコル（ＨＴＴＰｓ）を用いて１つまたは複数のプロキシを収集および検証するように構成することができる。プロキシモジュールは、クローラモジュールと協働して１つまたは複数のＵＲＬｓに基づいてデータおよび／またはウェブデータをフェッチすることができる。いくつかの実施形態において、プロキシモジュールは、さらにクロームクローラモジュールのクローリング圧力制御を提供するようにさらに構成することができる。いくつかの実施形態において、クロームクローラモジュールがクローリングをサポートする少なくとも１つのＵＲＬは、ユーザ定義されたロジックアルゴリズムを含むことができる。
【００１４】
いくつかの実施形態において、システムは、クローラモジュールと通信しているクローリング圧力制御モジュールを含むことができる。クローリング圧力制御モジュールは、同時フェッチリクエストおよび／またはプリセットクローリング周波数のプリセットカウントに従って、クローラモジュールがウェブサイトデータおよび／またはウェブページデータをフェッチするのを制御するように構成することができる。いくつかの実施形態において、クラウドコンピューティングのためのシステムは、サービスとしてのプラットフォーム（ＰＡＡＳ）に基づいてオペレーションおよびメインテナンスプラットフォーム上で実行することができる。いくつかの実施形態において、オペレーションおよびメインテナンスプラットフォームは、クローリングジョブをインプリメントするためのコンテナ（container）を開示するように構成することができる。いくつかの実施形態において、オペレーションおよびメインテナンスプラットフォームは、さらにコンテナを動的に管理するように構成することができる。いくつかの実施形態において、クラウドコンピューティングのためのシステムは、クローリングジョブに関連する構成情報を含むコンフィグファイルを記憶するように構成された、ストレージシステムと通信することができ、あるいは含むことができる。
【００１５】
この開示の他の態様によれば、クラウドコンピューティングのためのシステムは、命令セットを記憶する少なくとも１つのストレージ媒体と、少なくとも１つのストレージ媒体と通信している少なくとも１つのプロセッサを含むことができる。記憶された命令のセットを実行すると、少なくとも１つのプロセッサは、システムに、１つ又は複数のユニフォームリソースロケータ（ＵＲＬｓ）を受信するように応答させ、１つ又は複数のＵＲＬｓをシードデータベースに記憶させることができる。少なくとも１つのプロセッサは、システムに、実行されるために待機している第１のカウントのタスクに基づいて、シードデータベースから少なくとも１つのＵＲＬｓをシステムに選択させることができる。少なくとも１つのプロセッサは、システムに、少なくとも１つの選択されたＵＲＬの各々に基づいて、タスクを生成させることができる。少なくとも１つのプロセッサは、システムに、タスクを対応するクローラモジュールにディスパッチさせて、タスクに関連づけられたＵＲＬに従う少なくとも１つのウェブページをフェッチさせることができる。少なくとも１つのプロセッサは、システムに、少なくとも１つのウェブページを解析させることにより、少なくとも１つのウェブページのエレメント情報を抽出させ、エレメント情報を、ファイルシステムに記憶させることができる。
【００１６】
いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、アプリケーションプログラムインタフェース（ＡＰＩ）を介して、ユーザにより開始されたウェブクローリングの要求を受信させることができる。いくつかの実施形態において、少なくとも１つのプロセッサは、システムに実行されるために待機している第１のカウントのタスクを識別させることができる。少なくとも１つのプロセッサは、システムに、シードデータベースの第２のカウントのＵＲＬｓを識別させることができる。少なくとも１つのプロセッサは、システム、に第１のカウント、または第２のカウントに基づいて、ＵＲＬを選択するかどうかを判断させることができる。少なくとも１つのプロセッサは、第１のカウントまたは第２のカウントの少なくとも１つが、１つまたは複数の基準を満足するとの判断に応答して、システムに、少なくとも１つのＵＲＬをシードデータベースから選択させることができる。
【００１７】
いくつかの実施形態において、シードデータベースから選択された少なくとも１つのＵＲＬのカウントは、第１のカウントまたは第２のカウントの少なくとも１つに関連づけることができる。いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、シードデータベース内のＵＲＬの優先度に基づいて、シードデータベースから少なくとも１つのＵＲＬを選択させることができる。
【００１８】
いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、要求を解析することにより構成ファイルを生成させることができ、コンフィグファイルは、その要求に関連づけられた１つまたは複数のタスクに関連する構成情報を備える。少なくとも１つのプロセッサは、システムに、コンフィグファイルをストレージシステムに記憶させることができる。
【００１９】
いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、タスクに関連したコンフィグ情報に基づいて対応するクローラモジュールを決定させることができる。少なくとも１つのプロセッサは、システムに、タスクを、対応するクローラモジュールにディスパッチさせることができる。いくつかの実施形態において、対応するクローラモジュールは、スパイダークローラモジュールまたはクロームクローラモジュールに、タスクをディスパッチさせることができる。
【００２０】
いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、タスクに関連づけられた構成情報に従って、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページのエレメント情報を抽出させることができる。いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、タスクに関連づけられた構成情報に従って、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページから、１つまたは複数のリンクしたＵＲＬを抽出させることができる。少なくとも１つのプロセッサは、システムに、１つまたは複数の抽出された、リンクしたＵＲＬをシードデータベースに記憶させることができる。
【００２１】
いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、少なくとも１つのウェブページをメッセージキューにプッシュさせることができる。少なくとも１つのプロセッサは、システムに、少なくとも１つのウェブページをメッセージキューからポップ（pop）させることができる。少なくとも１つのプロセッサは、システムに１つまたは複数のリンクしたＵＲＬを、少なくとも１つのウェブページから抽出させることができる。
【００２２】
いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、少なくとも１つのウェブページをファイルシステムに記憶させることができる。少なくとも１つのプロセッサは、システムに、少なくとも１つのウェブページをファイルシステムからオフラインで取得させることができる。少なくとも１つのプロセッサは、システムに、１つまたは複数のリンクしたＵＲＬを、少なくとも１つのウェブページから抽出させることができる。
【００２３】
いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、プロキシモジュールの１つまたは複数のプロキシを用いて、タスクに関連づけられたＵＲＬに従う、少なくとも１つのウェブページをフェッチさせることができ、各プロキシは、インターネットプロトコル（ＩＰ）アドレスを有する。いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、プロキシモジュール内の実効ＩＰアドレスのカウントに基づいて、同時フェッチ要求の数、またはクロール頻度を調節させることができる。
【００２４】
いくつかの実施形態において、少なくとも１つのプロセッサは、システムに、要求に関連づけられた１つまたは複数のタスクをインプリメントするためのコンテナ（container）を開始させることができる。いくつかの実施形態において、ファイルシステムは、Ｈａｄｏｏｐ分散ファイルシステム（ＨＤＦＳ）であり得る。
【００２５】
この開示の他の態様によれば、方法は、少なくとも１つのプロセッサにより実行される、１つまたは複数の以下の動作を含むことができる。この方法は、１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を備える要求を受信することに応答して、１つまたは複数のＵＲＬをシードデータベースに記憶することを含むことができる。この方法は、実行されるために待機している第１のカウントのタスクに基づいて、シードデータベースから少なくとも１つのＵＲＬを選択することを含むことができる。この方法は、少なくとも１つの選択されたＵＲＬの各々に基づいて、タスクを生成することを含むことができる。この方法は、対応するクロールモジュールにタスクをディスパッチし、クローラモジュールに、タスクに関連づけられたＵＲＬに従う、少なくとも１つのウェブページをフェッチさせることができる。この方法は、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページのエレメント情報を抽出することを含むことができる。この方法は、エレメント情報を、ファイルシステムに記憶することを含むことができる。
【００２６】
この開示のさらに他の態様によれば、非一時的コンピュータ可読媒体は、システムウェブクローリングに関する、少なくとも１つの命令セットを含むことができる。この開示のさらに他の態様によれば、少なくとも１つの命令セットは、コンピューティングデバイスに方法を実行させる。この方法は、１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）からなる要求を受信することに応答して、１つまたは複数のＵＲＬをシードデータベースに記憶することを含むことができる。この方法は、実行されるために待機している第１のカウントのタスクに基づいて、シードデータベースから、少なくとも１つのＵＲＬを選択することを含むことができる。この方法は、少なくとも１つの選択されたＵＲＬの各々に基づいて、タスクを生成することを含むことができる。この方法は、タスクを対応するクローラモジュールにディスパッチして、クローラモジュールに、タスクに関連づけられたＵＲＬに従う、少なくとも１つのウェブページをフェッチさせることを含むことができる。この方法は、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページのエレメント情報を抽出させることができる。この方法は、エレメント情報をファイルシステムに記憶することを含むことができる。
【００２７】
この開示のクラウドコンピューティングのいくつかのシステムおよび方法によれば、ウェブページデータおよび／またはウェブサイトデータをフェッチすることができる。クラウドコンピューティングシステムは、ネットワークデータ全体のフェッチをサポートすることができ、相対的に高い普遍性を有することができる。保守および運用コストを削減することができ、有効なデータをフェッチする信頼性を改善することができる。フェッチプロセスの期間中、クロール圧力を正確に制御することができる。さらに、コンテナの拡張および／またはコンテナの縮小のための柔軟性のある編集可能なインタフェースをユーザ（複数の場合もある）のために提供することができる。フェッチしたデータは、Ｈａｄｏｏｐ分散ファイルシステム（ＨＤＦＳ）に記憶することができ、データ相互作用圧力を相対的に低くすることができ、データ読取り効率を相対的に高くすることができる。
【００２８】
追加の特徴は、以下の説明に一部記載され、一部は、以下および添付の図面を検討することにより当業者に明らかになるか、または実施例の製造または操作によって学習され得る。本開示の特徴は、以下で論じられる詳細な例に示される方法論、手段、および組み合わせの様々な側面の実践または使用によって実現および達成され得る。この開示はさらに、例示実施形態の観点から記載される。これらの例示実施形態は、図面を参照して詳細に記載される。これらの実施形態は、非限定の例示実施形態であり、図面全体を通して、類似の参照符号は、類似の構造を表す。
【図面の簡単な説明】
【００２９】
【図１】この開示のいくつかの実施形態に従う例示クラウドコンピューティングシステムを図示する概略図である。
【図２】サーバ、ストレージデバイスおよび／または端末デバイスを、この開示のいくつかの実施形態に従ってインプリメントすることができるコンピューティングデバイスの例示コンポーネントを図示する概略図である。
【図３】この開示のいくつかの実施形態に従って、端末デバイス１３０をインプリメントすることができる例示コンピューティングデバイスの例示ハードウェアおよび／またはソフトウェアコンポーネントを図示する概略図である。
【図４】この開示のいくつかの実施形態に従う例示クラウドコンピューティングシステムを図示するブロック図である。
【図５】この開示のいくつかの実施形態に従う例示クラウドコンピューティングシステムを図示するブロック図である。
【図６】この開示のいくつかの実施形態に従うクラウドコンピューティングシステムの例示データ相互作用プロセスを図示する概略図である。
【図７】この開示のいくつかの実施形態に従う、ウェブクローリングの例示プロセスを図示するフローチャートである。
【図８】この開示のいくつかの実施形態に従う、リンク（複数の場合もある）を発見するための例示プロセスを図示するフローチャートである。
【発明を実施するための形態】
【００３０】
以下の記述は、当業者がこの開示を制作および使用することを可能にするために提示され、特定のアプリケーションおよびその要求のコンテキストにおいて提供される。開示された実施形態に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義された一般原理は、本開示の精神および範囲から逸脱することなく、他の実施形態および用途に適用され得る。したがって、本開示は、示された実施形態に限定されるものではなく、特許請求の範囲と一致する最も広い範囲を与えられるべきである。
【００３１】
本明細書で使用される用語は、特定の例示的な実施形態を説明することのみを目的としており、限定することを意図するものではない。本明細書で使用される場合、単数形「１つの（ａ）」、「１つの（ａｎ）」、および「その（ｔｈｅ）」は、文脈が明らかに他のことを示さない限り、複数形も含むことを意図し得る。「含む（comprise）」、「含む（comprises）」および／または「含む（comprising）」、「含む（include）」、「含む（includes）」および／または「含む（including）」という用語は、本開示で使用される場合、記載された特徴 、整数、ステップ、操作、要素、および／またはコンポーネントの存在を指定することがさらに理解されよう。ただし、１つまたは複数の他の特徴、整数、ステップ、操作、要素、コンポーネント、および／またはそれらのグループの存在または追加を排除するものではない。
【００３２】
これらおよび他の特徴、ならびに本開示の特徴、ならびに構造の関連要素の操作および機能の方法、ならびに部品および製造経済の組み合わせは、以下を参照して以下の説明を検討することにより、より明らかになる可能性がある。 添付の図面は、すべてこの開示の一部を形成する。しかしながら、図面は、例示および説明のみを目的としており、本開示の範囲を限定することを意図するものではないことを明確に理解されたい。図面は原寸に比例していないことが理解される。
【００３３】
本開示で使用されるフローチャートは、本開示のいくつかの実施形態に従ってシステムが実施する動作を示している。フローチャートの操作は、順番に実行されない場合があることを明確に理解されたい。逆に、操作は逆の順序で、または同時に実行することができる。さらに、１つまたは複数の他の動作をフローチャートに追加することができる。１つまたは複数の動作は、フローチャートから除去することができる。
【００３４】
この開示の一態様は、クラウドコンピューティングのためのシステムに関する。システムは、アプリケーションプログラムインタフェース（ＡＰＩ）、シードデータベース、ジョブジェネレータ、及びクローラモジュールを含むことができる。ＡＰＩは、ユーザインタフェースを提供してユーザにより提出されたクローリングモジュールを取得するように構成することができる。ＡＰＩと通信しているシードデータベースは、クローリングジョブに関連づけられた１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を記憶するように構成することができる。シードデータベースと通信しているジョブジェネレータは、１つまたは複数のＵＲＬｓを取得し、１つまたは複数のＵＲＬｓの各々を対応するクローラモジュールにディスパッチするように構成することができる。ジョブジェネレータと通信しているクローラモジュールは、１つまたは複数のＵＲＬｓに基づいてウェブサイトデータおよび／またはウェブページデータをフェッチするように構成することができる。
【００３５】
この開示の他の態様は、ウェブクローリングのための方法に関する。この方法は、１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を備えた要求を受信することに応答して、１つまたは複数のＵＲＬｓをシードデータベースに記憶することを含むことができる。この方法は、実行されるために待機している第１のカウントのタスクに基づいて、シードデータベースから少なくとも１つのＵＲＬを選択することを含むことができる。この方法は、また、少なくとも１つの選択されたＵＲＬの各々に基づいてタスクを生成することを含むことができる。この方法はさらに、タスクを、対応するクローラモジュールにディスパッチして、クローラモジュールに、タスクに関連付けられたＵＲＬに対応する、少なくとも１つのウェブページをフェッチさせることを含むことができる。この方法は、さらに、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページのエレメント情報を抽出することを含むことができる。この方法は、また、エレメント情報をファイルシステムに記憶することを含むことができる。
【００３６】
この開示のシステムと方法によれば、ウェブページデータおよび／またはウェブデータをフェッチすることができる。ネットワークデータ全体のフェッチを実現することができ、相対的に高い普遍性を示すことができる。保守および運用コストを削減することができ、有効データをフェッチする信頼性を改善することができる。クローリング圧力は、フェッチプロセス期間中に正確に制御することができる。さらに、システムおよび方法で使用されるコンテナは、動的に管理することができる。フェッチされたデータは、Ｈａｄｏｏｐ分散ファイルシステム（ＨＤＦＳ）に記憶することができ、データ相互作用圧力は、相対的に低く、データ読取り効率は、相対的に高くすることができる。それゆえ、安全に、効率よく、かつ費用効率良くウェブクローリングのためのシステムおよび方法を実現することができる。
【００３７】
図１は、この開示のいくつかの実施形態に従う例示クラウドコンピューティングシステムを図示する概略図である。クラウドコンピューティングシステム１００は、サーバ１１０、ネットワーク１２０、端末デバイス１３０および／またはストレージデバイス１４０を含むことができる。クラウドコンピューティングシステム１００内のコンポーネントは、１つまたは複数の種々の方法で接続することができる。単なる例示として、サーバ１１０は、ネットワーク１２０を介して端末デバイス１３０の少なくとも一部に接続することができる。他の例として、サーバ１１０は、サーバ１１０と端末デバイス１３０をリンクする破線の双方向矢印により示される端末１３０の少なくとも一部に、直接接続することができる。さらに他の例として、ストレージデバイス１４０は、直接またはネットワーク１２０を介してサーバ１１０に接続することができる。さらに、他の例として、ストレージデバイス１４０は、端末デバイス１３０の少なくとも一部に、直接またはネットワーク１２０を介して接続することができる。
【００３８】
いくつかの実施形態において、サーバ１１０は、サーバグループであり得る。サーバグループは、集中制御または分散制御（例えば、分散システム）であり得る。例えば、サーバ１１０は、サーバ１１０−１、サーバ１１０−２、・・・およびサーバ１１０−ｎを含むことができる。いくつかの実施形態において、サーバ１１０は、ローカルまたはリモートであり得る。例えば、サーバ１１０は、ネットワーク１２０を介して端末デバイス１３０および／またはストレージデバイス１４０に記憶された情報および／またはデータにアクセスすることができる。他の例として、サーバ１１０は、記憶された情報および／またはデータをアクセスするために、端末１３０および／ストレージデバイス１４０に直接接続することができる。いくつかの実施形態において、サーバ１１０は、クラウドプラットフォーム上にインプリメントすることができる。単なる例として、クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散クラウド、インタークラウド、マルチクラウド等、またはそれらの任意の組み合わせを含むことができる。いくつかの実施形態において、サーバ１１０は、この開示の図２に示す１つまたは複数のコンポーネントを有するコンピューティングデバイス２００上に、またはこの開示の図３に示す１つまたは複数のコンポーネントを有するモバイルデバイス３００上にインプリメントすることができる。
【００３９】
いくつかの実施形態において、サーバ１１０の各々は、処理エンジン１１２を含むことができる。例えば、サーバ１１０−１は、処理エンジン１１２−１を含み、サーバ１１０−２は、処理エンジン１１２−２を含み、・・・サーバ１１０−ｎは、処理エンジン１１２−ｎを含むことができる。処理エンジン１１２（例えば、処理エンジン１１２−１、処理エンジン１１２−２、処理エンジン１１２−ｎ）は、情報および／またはデータを処理して、この開示に記載された、１つまたは複数の機能を実行することができる。例えば、処理エンジン１１２は、１つまたは複数のＵＲＬｓを含む要求をユーザから受信することができる。他の例として、処理エンジン１１２は、１つまたは複数のＵＲＬｓをシードデータベースに記憶することができる。さらに他の例として、処理エンジン１１２は、要求を解析することにより、コンフィグファイルを生成することができる。さらに、他の例として、処理エンジン１１２は、実行されるために待機している第１のカウントのタスクに基づいて、シードデータベースから少なくとも１つのＵＲＬを選択することができる。さらに他の例として、処理エンジン１１２は、少なくとも１つの選択されたＵＲＬｓの各々に基づいて、タスクを生成することができる。さらに他の例として、処理エンジン１１２は、タスクを対応するクローラモジュールにディスパッチして、クローラモジュールに、タスクに関連づけられたＵＲＬに従う少なくとも１つのウェブページをフェッチさせることができる。さらに、他の例として、処理エンジン１１２は、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページのエレメント情報を抽出することができる。さらに、他の例として、処理エンジン１１２は、エレメント情報をファイルシステム（例えば、ＨＤＦＳ）に記憶することができる。さらに他の例として、処理エンジン１１２は、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページから、１つまたは複数のリンクしたＵＲＬｓを抽出することができる。さらに、他の例として、処理エンジン１１２は、１つまたは複数の抽出されたリンクしたＵＲＬｓをシードデータベースに記憶することができる。
【００４０】
いくつかの実施形態において、処理エンジン１１２は、１つまたは複数の処理エンジン（例えば、シングルコア処理エンジン（複数の場合もある）またはマルチコアプロセッサ（複数の場合もある））を含むことができる。単なる例として、処理エンジン１１２は、中央処理ユニット（ＣＰＵ）、特定用途集積回路（ＡＳＩＣ）、特定用途命令プロセッサ（ＡＳＩＰ）、グラフィクスプロセッシングユニット（ＧＰＵ）、物理プロセッシングユニット（ＰＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックデバイス（ＰＬＤ）、コントローラ、マイクロコントローラユニット、縮小命令セットコンピュータ（ＲＩＳＣ）、マイクロプロセッサ等、または、それらの任意の組み合わせを含むことができる。
【００４１】
ネットワーク１２０は、情報および／またはデータの交換を容易にすることができる。いくつかの実施形態において、クラウドコンピューティングシステム１００（例えば、サーバ１１０、ストレージデバイス１４０、および端末デバイス１３０）内の１つまたは複数のコンポーネントは、情報および／またはデータを、ネットワーク１２０を介してクラウドコンピューティングシステム１００内の他のコンポーネント（複数の場合もある）に送信することができる。例えば、処理エンジン１１２は、ネットワーク１２０を介して端末デバイス１３０からウェブクローリングの要求を受信することができる。他の例として、処理エンジン１１２は、ネットワーク１２０を介してストレージデバイス１４０から、１つまたは複数のＵＲＬｓを取得することができる。いくつかの実施形態において、ネットワーク１２０は、任意のタイプの有線または無線ネットワーク、またはそれらの任意の組み合わせであり得る。単なる例示として、ネットワーク１２０は、ケーブルネットワーク、有線ネットワーク、光ファイバネットワーク、電気通信ネットワーク、イントラネット、インターネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、公衆電話交換網（ＰＳＴＮ）、ブルートゥース（登録商標）ネットワーク、ＺｉｇＢｅｅネットワーク、近距離通信（ＮＦＣ）ネットワーク等、またはそれらの任意の組み合わせを含むことができる。いくつかの実施形態において、ネットワーク１２０は、１つまたは複数のネットワークアクセスポイントを含むことができる。例えば、ネットワーク１２０は、基地局および／またはインターネット交換ポイント１２０−１、１２０−２・・・のような有線または無線ネットワークアクセスポイントを含み、これらを介して、クラウドコンピューティングシステム１００の１つまたは複数のコンポーネントがネットワーク１２０に接続され、データおよび／または情報を交換することができる。
【００４２】
いくつかの実施形態において、端末デバイス１３０は、モバイルデバイス１３０−１、タブレットコンピュータ１３０−３、ラップトップコンピュータ１３０−３、電話１３０−４等、またはそれらの任意の組み合わせを含むことができる。いくつかの実施形態において、モバイルデバイス１３０−１は、スマートホームデバイス、ウェアラブルデバイス、モバイル機器、仮想現実デバイス、オーグメンテッドリアリティデバイス（augmented reality device）等、またはそれらの任意の組み合わせを含むことができる。いくつかの実施形態において、スマートホームデバイスは、スマート照明デバイス、インテリジェント電気装置の制御デバイス、スマートモニタリングデバイス、スマートテレビジョン、スマートビデオカメラ、インターフォン等、またはそれらの任意の組み合わせを含むことができる。いくつかの実施形態において、ウェアラブルデバイスは、ブレスレット、履物、メガネ、ヘルメット、時計、衣服、バックパック、スマートアクセサリ等、またはそれらの任意の組み合わせを含むことができる。いくつかの実施形態において、モバイル機器は、モバイルフォン、パーソナルデジタルアシスタンス（ＰＤＡ）、ゲームデバイス、ナビゲーションデバイス、ポイントオブセール（ＰＯＳ）デバイス、ラップトプ等、またはそれらの任意の組合せを含むことができる。いくつかの実施形態において、バーチャルリアリティデバイスおよび／またはオーグメンテッドリアリティデバイスは、バーチャルリアリティヘルメット、バーチャルリアリティグラス、バーチャルリアリティパッチ、オーグメンテッドリアリティヘルメット、オーグメンテッドリアリティグラス、オーグメンテッドリアリティパッチ等、またはそれらの任意の組合わせを含むことができる。例えば、バーチャルリアリティデバイスおよび／またはオーグメンテッドリアリティデバイスは、グーグルグラス（登録商法）、ＲｉｆｔＣｏｎ（登録商標）、Ｆｒａｇｍｅｎｔｓ（登録商標）、ギアＶＲ（登録商標）等を含むことができる。
【００４３】
ストレージデバイス１４０は、データおよび／または命令を記憶することができる。いくつかの実施形態において、ストレージデバイス１４０は、端末デバイス１３０および／または処理エンジン１１２から取得したデータを記憶することができる。例えば、ストレージデバイス１４０は、端末デバイス１３０から受信した１つまたは複数のＵＲＬｓを含む要求を記憶することができる。他の例として、ストレージデバイス１４０は、処理エンジン１１２により決定された少なくとも１つのウェブページのエレメント情報を記憶することができる。さらに、他の例として、ストレージデバイス１４０は、処理エンジン１１２により決定された少なくとも１つのウェブページに関連づけられた、１つまたは複数のＵＲＬｓを記憶することができる。いくつかの実施形態において、ストレージデバイス１４０は、サーバ１１０が実行または使用して、この開示に記載した例示方法を実行することができるデータおよび／または命令を記憶することができる。例えば、ストレージデバイス１４０は、処理エンジン１１２が実行されるために待機している第１のカウントのタスクに基づいて、シードデータベースから少なくとも１つのＵＲＬを選択するために実行または使用することができる命令を記憶することができる。他の例として、ストレージデバイス１４０は、処理エンジン１１２が、少なくとも１つの選択されたＵＲＬの各々に基づいてタスクを生成するために実行または使用することができる命令を記憶することができる。さらに、他の例として、ストレージデバイス１４０は、処理エンジン１１２が、タスクを対応するクローラモジュールにディスパッチして、クローラモジュールに、タスクに関連付けられた１つのＵＲＬに対応する少なくとも１つのウェブページをフェッチさせるために実行または使用する命令を記憶することができる。さらに他の例として、ストレージデバイス１４０は、処理エンジン１１２が、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページのエレメント情報を抽出するために実行または使用することができる命令を記憶することができる。さらに、他の例として、ストレージデバイス１４０は、処理エンジン１１２が、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページから１つまたは複数のリンクしたＵＲＬｓを抽出するために実行または使用することができる命令を記憶することができる。
【００４４】
いくつかの実施形態において、ストレージデバイス１４０は、マスストレージ、リムーバブルストレージ、ボラタイルリードアンドライトメモリ、リードオンリメモリ（ＲＯＭ）等、またはそれらの任意の組合わせを含むことができる。例示マスストレージは、磁気ディスク、光ディスク、ソリッドステートドライブ等を含むことができる。例示リムーバブルストレージは、フラッシュドライブ、フロッピーディスク、光ディスク、メモリカード、ジップディスク、磁気テープ等を含むことができる。例示ボラタイルリードアンドライトメモリは、ランダムアクセスメモリ（ＲＡＭ）を含むことができる。例示ＲＡＭは、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデートレート同期ダイナミックＲＡＭ（DDR  ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、サイリスタＲＡＭ（Ｔ−ＲＡＭ）、およびゼロキャパシタＲＡＭ（Ｚ−ＲＡＭ）等を含むことができる。例示ＲＯＭは、マスクＲＯＭ（ＭＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、イレーサブルプログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、およびデジタルバーサタイルディスクＲＯＭ等を含むことができる。いくつかの実施形態において、ストレージデバイス１４０は、クラウドプラットフォーム上でインプリメントすることができる。単なる例示として、クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散クラウド、インタークラウド、マルチクラウド等またはそれらの任意の組み合わせを含むことができる。
【００４５】
いくつかの実施形態において、ストレージデバイス１４０は、ネットワーク１２０と接続して、クラウドコンピューティングシステム１００の１つまたは複数のコンポーネント（例えば、サーバ１１０、端末デバイス１３０）と通信することができる。クラウドコンピューティングシステム１００内の１つまたは複数のコンポーネントは、ネットワーク１２０を介してストレージデバイス１４０に記憶されたデータまたは命令にアクセスすることができる。いくつかの実施形態において、ストレージデバイス１４０は、クラウドコンピューティングシステム１００内の１つまたは複数のコンポーネント（例えば、サーバ１１０、端末デバイス１３０）と直接接続または通信することができる。いくつかの実施形態において、ストレージデバイス１４０は、サーバ１１０の一部であり得る。
【００４６】
クラウドコンピューティングシステム１００は、単に例示目的のために提供され、この開示の範囲を限定することを意図したものではないことに留意する必要がある。当業者には、この開示の教示に基づいて、複数の変形または変更が可能である。例えば、クラウドコンピューティングシステム１００は、さらにデータベース（またはファイルシステム（例えば、ＨＤＦＳ））、情報ソース等を含むことができる。他の例として、クラウドコンピューティングシステム１００は、他のデバイス上にインプリメントして、同様の、または異なる機能を実現することができる。しかしながら、これらの変形および変更は、この開示の範囲から逸脱しない。
【００４７】
いくつかの実施形態において、クラウドコンピューティングシステム１００は、さらにクローリングジョブ（複数の場合もある）に関連するコンフィグ情報を含む情報ファイル（複数の場合もある）を記憶するように構成されたストレージシステム（例えば、システム５２１２）を更に含むことができる。いくつかの実施形態において、ストレージシステムは、ストレージデバイス１４０またはその一部を含むことができる。コンフィグファイルのさらなる記載は、この開示のどこか（例えば、図７とその説明）に見出すことができる。いくつかの実施形態において、クラウドコンピューティングシステム１００および／またはストレージシステムは、さらに、ファイルシステム（例えば、ＨＤＦＳ）を含むか、それと通信することができる。
【００４８】
いくつかの実施形態において、クラウドコンピューティングシステム１００は、運用および保守プラットフォーム（例えば、サービスとしてのプラットフォーム（ＰＡＡＳ）に基づく運用および保守プラットフォーム）上で実行することができる。ここに使用されるように、ＰＡＡＳは、アプリケーションの開発および起動に一般的に関連するインフラストラクチャの構築と保守を複雑にすることなく、カスタマがアプリケーションの開発、実行、管理を可能にするプラットフォームを提供するクラウドコンピューティングサービスのカテゴリを指すことができる。
【００４９】
いくつかの実施形態において、運用および保守プラットフォームは、クローリングジョブをインプリメントするためのコンテナを開始するように構成することができる。ここに使用されるように、コンテナリゼーション（containerization）は、オペレーティングシステムの機能を指すことができ、オペレーティングシステムは、複数の分離されたユーザスペースインスタンス（コンテナとも呼ばれる）の存在を可能にすることができる。通常のオペレーティングシステム上で実行されているコンピュータプログラムは、（通常のオペレーティングシステムが実行されている）そのコンピュータのすべてのリソース（例えば、接続されているデバイス、ファイルおよびフォルダ、ネットワークシェア、ＣＰＵ電力、定量化可能なハードウェア機能）を表示および／または利用可能である。しかしながら、コンテナ内部で実行されているコンピュータプログラムは、コンテナの内容（例えば、データ、プログラム等）およびコンテナに割り当てられたデバイス（またはリソース）のみを表示および／または利用することができる。
【００５０】
いくつかの実施形態において、運用および保守プラットフォームは、さらに、コンテナ（複数の場合もある）を動的に管理するように構成することができる。例えば、新しいクローリングジョブ（複数の場合もある）をインプリメントする必要がある場合、運用および保守プラットフォームは、コンテナ（複数の場合もある）を実行することができる。他の例として、クローリングジョブ（複数の場合もある）が終了した場合、運用および保守プラットフォームは、コンテナ（複数の場合もある）を縮小することができる。
【００５１】
図２は、サーバ１１０、ストレージデバイス１４０および／または端末デバイス１３０が、この開示のいくつかの実施形態に従ってインプリメントすることができるコンピューティングデバイスの例示コンポーネントを図示する概略図である。特定のシステム（例えば、クラウドコンピューティングシステム１００）は、機能ブロック図を用いて、１つまたは複数のユーザインタフェースを含むハードウェアプラットフォームを説明することができる。コンピュータは、汎用の、または特定の機能を有するコンピュータであり得る。コンピュータの両方のタイプは、この開示のいくつかの実施形態に従う任意の特定のシステム（例えば、クラウドコンピュ−ティングシステム１００）をインプリメントするように構成することができる。コンピューティングデバイス２００は、この開示で開示した１つまたは複数の機能を実行する任意のコンポーネントをインプリメントするように構成することができる。例えば、コンピューティングシステム２００は、ここに記載したクラウドコンピューティングシステム１００の任意のコンポーネントをインプリメントすることができる。図１乃至２において、そのようなコンピュータデバイスの１つのみを便宜的に示す。当業者は、この出願の時点において、ここに記載したウェブクローリングに関連するコンピュータ機能は、多数の同様のプラットフォーム上に分散態様でインプリメントして処理負荷を分散させることができることを理解するであろう。
【００５２】
例えば、コンピューティングデバイス２００は、ネットワークへの、またはネットワークからのデータ通信を容易にするために接続されたＣＯＭポート２５０を含むことができる。コンピューティングデバイス２００は、また、プログラム命令を実行するための、１つまたは複数のプロセッサ（例えば、ロジック回路）の形態のプロセッサ（例えば、プロセッサ２２０）を含むことができる。例えば、プロセッサは、インタフェース回路と処理回路を含むことができる。インタフェース回路は、バス２１０から電子信号を受信するように構成することができ、電子信号は、構造化データおよび／または処理回路が処理するための命令を符号化する。処理回路は、論理計算を行うことができ、次に、結論、結果、および／または電子信号として符号化された命令を決定することができる。次に、インタフェース回路は、バス２１０を介して処理回路から電信信号を送信することができる。
【００５３】
例示コンピューティングデバイスは、内部通信バス２１０、コンピューティングデバイスにより処理され、および／または送信される種々のデータファイルのための、例えば、ディスク２７０、およびリードオンリメモリ（ＲＯＭ）２３０、またはランダムアクセスメモリ（ＲＡＭ）２４０を含む、異なる形態のプログラムストレージおよびデータストレージを含むことができる。例示コンピューティングデバイスは、また、プロセッサ２２０により実行される、ＲＯＭ２３０、ＲＡＭ２４０、および／または他のタイプの非一時的記憶媒体に記憶されたプログラム命令を含むことができる。この開示の方法および／又はプロセスは、プログラム命令としてインプリメントすることができる。コンピューティングデバイス２００は、また、コンピュータと他のコンポーネントとの間の入出力をサポートするＩ／Ｏコンポーネント２６０を含むことができる。コンピューティングデバイス２００は、また、ネットワーク通信を介してプログラミングおよびデータを受信することができる。
【００５４】
単なる例示として、ただ一つのＣＰＵおよび／またはプロセッサが図２に示されている。複数のＣＰＵおよび／またはプロセッサも考慮され、従って、この開示で記載された１つのＣＰＵおよび／またはプロセッサにより実行される動作および／または方法ステップは、また、一緒になって、又は個別に複数のＣＰＵおよび／またはプロセッサにより実行することができる。例えば、この開示において、コンピューティングデバイス２００のＣＰＵおよび／またはプロセッサが、動作Ａおよび動作Ｂの両方を実行する場合、動作Ａと動作Ｂは、コンピューティングデバイス２００内で一緒に、または別個に２つの異なるＣＰＵおよび／またはプロセッサにより実行することもできる（例えば、第１のプロセッサが動作Ａを実行し、第２のプロセッサが動作Ｂを実行し、あるいは第１と第２のプロセッサが協働して動作ＡおよびＢを実行する）。
【００５５】
図３は、この開示のいくつかの実施形態に従って端末デバイス１３０をインプリメントすることができる例示モバイルデバイスの例示ハードウェアおよび／またはソフトウェアコンポーネントを図示する概略図である。図３に図示するように、モバイルデバイス３００は、通信プラットフォーム３１０、ディスプレイ３２０、グラフィックプロセッシングユニット（ＧＰＵ）３３０、中央処理装置（ＣＰＵ）３４０、Ｉ／Ｏ３５０、メモリ３６０、およびストレージ３９０を含むことができる。ＣＰＵ３４０は、インタフェース回路と、プロセッサ２２０と同様な処理回路を含むことができる。いくつかの実施形態において、これに限定されないが、システムバスまたはコントローラ（図示せず）を含む任意の他の適切なコンポーネントも、モバイルデバイス３００に含めることができる。いくつかの実施形態において、モバイルオペレーティングシステム３７０（例えば、ｉＯＳ（登録商標）、アンドロイド（登録商標）、ウインドウズフォーン（登録商標））および１つまたは複数のアプリケーション３８０を、ＣＰＵ３４０により実行するために、ストレージ３９０からメモリ３６０にロードすることができる。アプリケーション３８０は、モバイルデバイス３００上のクラウドコンピューティングシステム１００からの要求、または他の情報に関連する情報を受信および／またはレンダリングするためのブラウザ、または任意の他の適切なモバイルアプリケーションを含むことができる。情報ストリームとのユーザ相互作用は、Ｉ／Ｏデバイス３５０を介して達成することができ、ネットワーク１２０を介してクラウドコンピューティングシステム１００の処理エンジン１１２および／または他のコンポーネントに提供することができる。
【００５６】
上述した、種々のモジュール、ユニットおよびそれらの機能をインプリメントするために、コンピュータハードウェアプラットフォームは、１つまたは複数のエレメント（例えば、図２に記載したサーバ１１０のコンポーネント）のハードウェアプラットフォームとして使用することができる。これらのハードウェアエレメント、オペレーティングシステムおよびプログラム言語は、一般的であるので、当業者は、これらの技術に精通している可能性があり、この開示に記載した技術に従って、ウェブクローリングに要求される情報を提供することができる可能性があると、みなすことができる。ユーザインタフェースを有したコンピュータは、パーソナルコンピュータ（ＰＣ）または、他のタイプのワークステーションまたは端末デバイスとして使用することができる。適切にプログラムされた後で、ユーザインタフェースを有するコンピュータは、サーバ１１０または端末デバイス１３０として使用することができる。当業者は、また、このタイプのコンピュータのそのような構造、プログラム、または一般的な動作に精通している可能性があるとみなすことができる。従って、これらの図に関する追加の説明は、記載されていない。
【００５７】
図４は、この開示のいくつかの実施形態に従う例示クラウドコンピューティングシステムを図示するブロック図である。図６は、この開示のいくつかの実施形態に従う、クラウドコンピューティングシステムの例示データ相互作用プロセスを図示する概略図である。クラウドコンピューティングシステム４１００は、アプリケーションプログラムインターフェース（ＡＰＩ）４１０２、シードデータベース４１０４、ジョグジェネレータ４１０６、クローラモジュール４１０８、リンクディスカバーモジュール４１１０、１つまたは複数の分散ストレージノード４１１２、解析モジュール４１１４、プロキシモジュール４１１６、およびクローリング圧力制御モジュール４１１８を含むことができる。いくつかの実施形態において、分散ストレージノード（複数の場合もある）４１１２は、ストレージデバイス１４０に構築することができる。
【００５８】
いくつかの実施形態において、図４および図６に示すように、この開示のいくつかの実施形態によれば、クラウドコンピューティングシステム４１００は、一人または複数のユーザにより提出された、１つまたは複数のクローリングジョブを取得するためのユーザインタフェースを提供するように構成されたＡＰＩ４１０２と、ＡＰＩ４１０２と通信し、クローリングジョブ（複数の場合もある）に関連づけられた１つまたは複数のＵＲＬｓを記憶するように構成された、シードデータベース４１０４と、シードデータベース４１０４と通信し、１つまたは複数のＵＲＬｓを取得するように構成され、および／または、１つまたは複数のＵＲＬｓの各々を対応するクローラモジュール４１０８にディスパッチするジョブジェネレータ４１０６と、ジョブジェネレータ４１０６と通信し、１つまたは複数のＵＲＬｓに基づいてウェブサイトデータおよび／またはウェブページをフェッチするように構成されたクローラモジュール４１０８と、を含むことができる。クローリングジョブ（複数の場合もある）は、ウェブサイトクローリングジョブ（複数の場合もある）および／またはウェブページクローリングジョブ（複数の場合もある）を含むことができるか、あるいはそれらに解析することができる。
【００５９】
いくつかの実施形態において、ウェブページクローリングジョブおよび／またはウェブサイトクローリングジョブのインプリメンテーションにシードデータベース４１０４を用いることにより、ウェブページクローリングジョブとウェブサイトクローリングジョブとの間の差を弱めることができる。ユーザは、ＵＲＬｓの完全な分割、フェッチされるウェブサイトの蓄積条件等を考慮せずに、クラウドコンピューティングシステム４１００（例えば、非同期に）にフェッチされる必要があるすべてのＵＲＬｓを配信または提出するだけでよい。上述したクラウドコンピューティングシステム４１１０を用いることにより、１つまたは複数の以下の技術的変更が可能となる。
【００６０】
（１）元のリンク選択操作は、ウェブサイトクロールジョブ（複数の場合もある）のみを処理する必要があるだけである。この開示で開示されたリンク選択操作によれば、ウェブサイトクローリングジョブ（複数の場合もある）およびウェブクローリングジョブ（複数の場合もある）は、同時に処理することができる。ユーザ定義したリンク選択ロジック（ま他はユーザ定義したリンク選択ルール）が無い限り、ウェブサイトクローリングジョブ（複数の場合もある）とウェブページクローリングジョブ（複数の場合もある）との間にリンク選択操作の差は無いので、この開示のリンク選択ロジックは、ウェブサイトクローリングジョブ（複数の場合もある）とウェブページクローリングジョブ（複数の場合もある）とを区別する必要がない場合がある。
【００６１】
（２）この開示のリンク選択ロジックは、クローリングプロセスがフェッチされるターゲットウェブサイト（複数の場合もある）により発見される可能性を低減するために、同時フェッチ要求の数および／またはクローリング頻度の制約を含めることができる。
（３）同時フェッチ要求に回数の制約を設けることによって、「１分あたりのリンク選択」ロジックを使用することができ、あるいは、「最適可能リンク選択」および配信戦略を用いて、クローリングリソースを最大限に活用することができる。さらに、ウェブページクローリングジョブ（複数の場合もある）に関するリンク選択動作の優先度は、ウェブサイトクローリングジョブ（複数の場合もある）に関するリンク選択動作の優先度よりも高い可能性がある。
【００６２】
リンク選択動作は、ウェブクローリングに関するシードデータベース４１０４からＵＲＬを選択する動作を指すことができる。いくつかの実施形態において、ジョブジェネレータ４１０６は、リンク選択動作（複数の場合もある）を実行することができる。リンク選択ロジックは、シードデータベース４１０４からＵＲＬｓの選択のロジックまたはルールを指すことができる。いくつかの実施形態において、ジョブジェネレータ４１０６は、リンク選択ロジックに基づいてリンク選択動作を実行することができる。ここに使用されるように、「１分あたりのリンク選択」は、ジョブジェネレータ４１０６が毎分シードデータベース４１０４から１つまたは複数のＵＲＬｓを選択することができ、１つまたは複数のＵＲＬｓの各々を対応するクローラモジュール４１０８にディスパッチすることを指すことができる。「最適可能リンク選択」は、ジョブジェネレータ４１０６が、クローラモジュール４１０８内で実行されるために待機しているタスクのカウントおよび／またはクラウドコンピューティングシステム４１００内で現在利用可能なリソースに基づいて、シードデータベースから１つまたは複数のＵＲＬｓを選択することができることに言及することができる。１つまたは複数のＵＲＬｓの選択のさらなる記述は、この開示のどこか（例えば、図７とその記述）に見出すことができる。
【００６３】
いくつかの実施形態において、シードデータベース４１０４は、各特定のクローリングジョブに関する対応するマッピングテーブル（例えば、サブデータベース）を提供することができるので、ジョブジェネレータ４１０６は、マッピングテーブルに従って、クローリングジョブを対応するクローラモジュール４１０８に配信することができる。ＡＰＩ４１０２は、ＡＰＩアグリゲーションプラットフォーム５２０２のインタフェースとしてインプリメントすることができる。ＡＰＩ４１０２は、多用途およびオープンな方法ですべての可能なユーザのためにフェッチングサービス（複数の場合もある）を提供することができる。この開示のクラウドコンピューティングシステム４１００の信頼性を改善するために、ユーザ（複数の場合もある）がクローリングジョブ（複数の場合もある）をクローラモジュール４１０８へ直接デリバリすること、または提出することを禁止するように設定することができる。
【００６４】
いくつかの実施形態において、クローラモジュール４１０８は、スパイダークローラモジュール４１０８２および／またはクロームクローラモジュール４１０８４を含むことができる。クロームクローラモジュール４１０８４は、ウェブページデータをフェッチする前に、レンダリングされたウェブページおよび／またはユーザ定義されたページにＪａｖａＳｃｒｉｐｔレンダリング動作を実行するように構成することができる。
【００６５】
いくつかの実施形態において、スパイダークローラモジュール４１０８２および／またはクロームクローラモジュール４１０８４を含むクローラモジュール４１０８を提供することにより、異なるユーザのクローリング要件を適合させることができる。特に、レンダリングされたウェブページおよび／またはユーザ定義されたページに対するＪａｖａＳｃｒｉｐｔレンダリングオペレーションの要求は、クロームクローラモジュール４１０８４を用いることにより応答および／または処理することができる。汎用ｈｔｍｌページをダウンロードする要求は、スパイダークローラモジュール４１０８２を用いることにより応答および／または処理することができる。
【００６６】
クローリングパーフォーマンス（複数の場合もある）を改善することを考慮して、スパイダークローラモジュール４１０８２を用いることができる。例えば、スパイダークローラモジュール４１０８２が１２コアＣＰＵ物理マシン上で実行される場合、毎秒数千の問い合わせ（ＱＰＳ）を達成することができる。クロームクローラモジュール４１０８４が１２コアＣＰＵ物理マシン上で実行される場合、ＱＰＳは、１０未満であり得る。実際のクローリングシナリオでは、ＪａｖａＳｃｒｉｐｔレンダリングオペレーション無しのクローリングジョブ（複数の場合もある）は、大きな割合を占める可能性がある。プラットフォーム（例えば、ＡＰＩ４１０２、運用および保守プラットフォーム４１２０）は、毎日数百万のクローリングジョブに直面する可能性があり、クロームクローラモジュール４１０８４を単独で使用することは、クローリング需要を満足させることができない。
【００６７】
シードデータベース４１０４は、クロームクローラモジュール４１０８４とスパイダークローラモジュール４１０８２のための２種類のテーブル（例えば、２つのデータベース）を提供することができる。クロームクローラモジュール４１０８４とスパイダークローラモジュール４１０８２のためのリンク選択動作は、異なるジョブジェネレータ４１０６により実行することができる。クロームクローラモジュール４１０８４のクローリング圧力制御は、スパイダークローラモジュール４１０８２のクローリング圧力制御と異なるので、クロームクローラモジュール４１０８４のクローリング圧力制御は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を用いてプロキシモジュール４１１６によりインプリメントすることができる。
【００６８】
いくつかの実施形態において、第１の種類のマッピングテーブルは、クロームクローラモジュール４１０８４に対して提供することができ、一方、第２の種類のマッピングテーブルは、スパイダークローラモジュール４１０８２に対して提供することができる。いくつかの実施形態において、解析モジュール４１１４は、ユーザにより提出された、または配信されたクローリングジョブを解析して、クローリングジョブに基づいて、対応するマッピングテーブル（第１の種類のマッピングテーブル、または第２の種類のマッピングテーブル）を生成することができる。いくつかの実施形態において、クローリングジョブに関連づけられた対応するマッピングテーブルは、シードデータベース４１０４に記憶することができる。いくつかの実施形態において、クローリングジョブに関連づけられたＵＲＬｓは、対応するマッピングテーブルに記録することができる。いくつかの実施形態において、ジョブジェネレータ４１０６は、クローリングジョブに関連づけられた対応するマッピングテーブルに基づいて、どのクローラモジュール（クローラモジュール４１０８４またはスパイダークローラモジュール４１０８２）に、シードデータベース４１０４のＵＲＬ（複数の場合もある）を配信することができるかを判断することができる。
【００６９】
さらに、ジョブジェネレータ４１０６の配信効率を最適化するために、スパイダークローラモジュール４１０８２は、ウェブサイトクローリングジョブ（複数の場合もある）をアップストリームモジュール（例えば、ジョブジェネレータ４１０６）に表示または提供するように構成することができる。非ｈｔｍｌページの場合、ＪａｖａＳｃｒｉｐｔレンダリングオペレーションは、クロームクローラモジュール４１０８４のブラウザカーネルにより実行することができ、次に、フェッチング動作を実行して、非ｈｔｍｌページの有効ウェブページをフェッチすることができる。
【００７０】
いくつかの実施形態において、クラウドコンピューティングシステム４１００は、さらに、クローラモジュール４１０８および／またはシードデータベース４１０４と通信している、リンクディスカバーモジュール４１１０を含むことができる。リンクディスカバーモジュール４１１０は、クローラモジュール４１０８によりフェッチされたウェブサイトデータおよび／またはウェブページデータを解析することによりクローリングジョブのリンククロール深度を決定し、リンククロール深度に基づいてクローリングジョブを更新し、更新されたクローリングジョブをシードデータベース４１０４にフィードバックするように構成することができる。
【００７１】
いくつかの実施形態において、クローリングジョブのリンククロール深度は、クローラモジュール４１０８によりフェッチされた、ウェブサイトデータおよび／またはウェブページデータを解析することにより決定することができる。クローリングジョブは、リンククロール深度に基づいて更新することができる。更新されたクローリングジョブは、シードデータベース４１０４にフィードバックすることができる。特に、ウェブサイトクローリングジョブ（複数の場合もある）に関して、リンククロール深度は、深さ優先検索戦略を示すことができ、これは、クローラモジュール４１０８が、開始ページから、開始ページに含まれる最初にリンクしたＵＲＬに関連づけられた最初のページまで、データのフェッチを開始することができ、次に、最初のページに含まれる、第２のリンクしたＵＲＬに関連づけられた、第２のページまでデータをフェッチし、以下同様である。深さ優先検索戦略のさらなる記述は、この開示のどこか（例えば、図７とその説明）に見出すことができる。
【００７２】
いくつかの実施形態において、リンクディスカバリモジュール４１１０は、第１のリンク生成ロジックモジュール４１１０２を含むことができる。第１のリンク生成ロジックモジュール４１１０２は、クローラモジュール４１０８によりフェッチされた、ウェブサイトデータの第１のコピーファイルおよび／または第２のコピーファイルをリアルタイムで解析することにより、クローリングジョブのリンククロール深度を決定し、リンククロール深度に基づいてクローリングジョブを更新し、更新されたクローリングジョブを、リアルタイムでシードデータベースにフィードバックするように構成することができる。
【００７３】
いくつかの実施形態において、第１のリンク生成ロジックモジュール４１１０２をクラウドコンピューティングシステム４１００に提供することにより、相対的に高いリアルタイム性能を有するリンクディスカバースキームを提供することができる。すなわち、クローリングジョブのリンククロール深度は、クローラモジュール４１０８によりフェッチされたウェブサイトデータの第１のコピーファイルと、ウェブページデータの第２のコピーファイルをリアルタイムで解析することにより決定することができる。クローリングジョブは、リンククロール深度に基づいて更新することができる。更新されたクローリングジョブは、リアルタイムでシードデータベース４１０４にフィードバックすることができる。
【００７４】
いくつかの実施形態において、クラウドコンピューティングシステム４１００は、さらに、１つまたは複数のクローラモジュール４１０８と通信している、１つまたは複数の分散ストレージノード４１１２を含むことができる。分散ストレージノード（複数の場合もある）４１１２は、プリセットされたディレクトリに従って、フェッチされたウェブサイトデータ、および／またはフェッチされたウェブページデータに関連づけられたエレメント情報を、分散して記憶するように構成することができる。
【００７５】
いくつかの実施形態において、１つまたは複数の分散されたストレージノード４１１２をクラウドコンピューティングシステム４１００に供給することにより、この開示の実施形態のクラウドコンピューティングシステム４１００の処理能力とフォールトトレランスを効率的に改善することができる。特に、分散ストレージノード（複数の場合もある）４１１２は、分散ファイルシステム（例えば、ＨＤＦＳ）を含むか、またはその一部であり得る。ＨＤＦＳは、汎用および低コストハードウェアシステムの動作に適している。さらに、ＨＤＦＳは、また、データのバッチ処理にも適しており、これは、クラウドコンピューティングシステム４１００のための相対的に高いアグリゲーションされたデータ帯域幅を提供することができる。例えば、クラスタは、数百のノードをサポートまたは含むことができ、クラスタは、また、数千万のファイルをサポートすることができる。ファイルのファイルサイズは、テラバイトに達する可能性がある。
【００７６】
いくつかの実施形態において、リンクディスカバーモジュール４１１０は、１つまたは複数の分散ストレージノード４１１２と通信している第２のリンク生成ロジックモジュール４１１０４を含むことができる。第２のリンク生成ロジックモジュール４１１０４は、オフラインで所定のスケジュールに従って、１つまたは複数の分散ストレージノード４１１２に記憶された、エレメント情報に対応する１つまたは複数の特徴値を決定し、エレメント情報に対応する１つまたは複数の特徴値に基づいて、リンククロール深度を決定し、リンククロール深度に基づいてクローリングジョブを更新し、更新されたクローリングジョブを、シードデータベース４１０４にフィードバックする、ように構成することができる。
【００７７】
いくつかの実施形態において、第２のリンク生成ロジックモジュール４１１０４をリンクディスカバーモジュール４１１０に設けることにより、分散ストレージノード（複数の場合もある）４１１２と組み合わせて、リンクディスカバーオペレーションは、オフラインのバッチ処理でエレメント情報に行うことができる。いくつかの実施形態において、エレメント情報の特徴値（複数の場合もある）は、フレームパラメータ、識別パラメータ、ラベルパラメータ、タイプパラメータ、テキストパラメータ、インデックスパラメータ等、またはそれらの任意の組み合わせを含むことができる。
【００７８】
いくつかの実施形態において、フェッチしたウェブページデータに関連付けられたテキスト情報は、フェッチされたウェブページデータの特徴値（複数の場合もある）に従って直接取得することができる。例えば、ウェブページデータに関連づけられたエレメント情報は、特徴値（複数の場合もある）を含むことができる。ウェブページデータの特徴値（複数の場合もある）に対応するテキスト情報は、ＨｔｍｌＧｅｔコマンドを用いて直接取得することができる。
【００７９】
いくつかの実施形態において、所定のスケジュールは、ユーザにより手動で設定することができるか、あるいは、デフォルト設定に従って、クラウドコンピューティングシステム４１００の１つまたは複数のコンポーネントにより決定することができる。いくつかの実施形態において、所定のスケジュールは、０．５時間、１．０時間、２．０時間等であり得る。
【００８０】
いくつかの実施形態において、クラウドコンピューティングシステム４１００は、１つまたは複数の分散ストレージノード４１１２と通信している解析モジュール４１１４を含むことができる。解析モジュール４１１４は、エレメント情報を１つまたは複数のプリセットされた解析アルゴリズムを用いて特定のフォーマットに変換し、特定のフォーマットのエレメント情報を１つまたは複数の分散ストレージノード４１１２に記憶する、ように構成することができる。
【００８１】
いくつかの実施形態において、解析モジュール４１１４は、ＡＰＩ４１０２と通信している可能性がある。ＡＰＩ４１０２は、ユーザ（複数の場合もある）により提出された、１つまたは複数の解析アルゴリズムを取得することができる。１つまたは複数の提出された解析アルゴリズムは、１つまたは複数のプリセットされた解析アルゴリズムとして指定することができ、解析モジュール４１１４に記憶することができる。
【００８２】
いくつかの実施形態において、ＡＰＩ４１０２と通信している解析モジュール４１１４を設けることができ、ＡＰＩ４１０２は、さらに、ユーザ（複数の場合もある）により提出された、１つまたは複数の解析アルゴリズムを取得するようにさらに構成され、１つまたは複数の提出された解析アルゴリズムは、１つまたは複数のプリセットされた解析アルゴリズムとして指定することができ、解析モジュール４１１４に記憶することができ、従って、クラウドコンピューティングシステム４１００の普遍性を改善することができる。
【００８３】
いくつかの実施形態において、クラウドコンピューティングシステム４１００は、クローラモジュール４１０８と通信しているプロキシモジュール４１１６を含むことができる。プロキシモジュール４１１６は、ＨＴＴＰｓ（例えば、海外のプロキシ（例えば、中国以外のプロキシ）を用いて１つまたは複数のプロキシを収集し検証し、クローラモジュール４１０８と協働して、１つまたは複数のＵＲＬｓ（例えば、中国以外）に基づいてウェブサイトデータおよび／またはウェブページデータをフェッチするように構成することができる。
【００８４】
いくつかの実施形態において、プロキシモジュール４１１６をクラウドコンピューティングシステム４１００に設けることにより、ウェブサイトデータおよび／またはウェブページデータ（例えば、中国以外）のクローリングの隠ぺいを改善することができる。特に、
【００８５】
（１）ＨＴＴＰｓを用いて、無料および／または有料の国内および／または国外のプロキシを、収集し、分類し、記憶し、管理することができる。
（２）クローラモジュール４１０８のＨＴＴＰフローは、透過な方法で捕捉することができ、（すなわち、フローインターセプト（flow interception）を実行することができる）、これは、クローラモジュール４１０８に関する透過性とデカップリング（decoupling）を達成することができ、普遍性（例えば、プロキシモジュール４１１６の、あるいはクラウドコンピューティングシステム４１００の）を保証することができる。フローインターセプトは、ダイナミックリンクライブラリ（例えば、.soファイル）を介した接続動作の書き換え、ＩＰアドレスのテーブルの変更等を含むことができる。
（３）クラウドコンピューティングシステム４１００により提供される外部（例えば、ユーザ（複数の場合もある））へのインタフェースは、標準プロキシプロトコルに順守し、これは、普遍性（例えば、プロキシモジュール４１１６の）を保証することができる。ＨＴＴＰプロキシを使用する任意のモジュールは、クラウドコンピューティングシステム４１００に直接（フローインタセプト無しに）アクセスすることができる。
（４）管理されたプロキシ（例えば、プロキシモジュール４１１６により管理されたＨＴＴＰプロキシ）は、継続的に補足される必要があり、プロキシの有効性を検証する必要があるかもしれない。
（５）プロキシモジュール４１１６自体は、フェッチ結果（例えば、フェッチされたウェブページデータ、フェッチされたウェブサイトデータ）の信頼性を改善するためのリトライ機構を提供することができる。
（６）プロキシＩＰアドレスをランダムに提供することに加えて、プロキシモジュール４１１６は、また、ユーザ特定ＩＰアドレスプール、リフレッシュ可能なＩＰアドレスプール等のような進歩したＩＰアドレス割当戦略もサポートすることができる。
（７）プロキシサービスを提供することに加えて、プロキシモジュール４１１６は、ウェブデータをクロールするための統合されたイクスポートも提供することができる。それゆえ、クロームクローラモジュール４１０８４および／またはスパイダークローラモジュール４１０８２のためのクローリング圧力制御は、プロキシモジュール４１１６によりインプリメントすることができる。
【００８６】
いくつかの実施形態において、ウェブデータをクロールするための統合されたイクスポートは、ターゲットウェブサイト（複数の場合もある）からの、クラウドコンピューティングシステム４１００のフェッチ動作がプロキシモジュール４１１６を介して統合的に行うことができることを指すことができる。いくつかの実施形態において、プロキシモジュール４１１６は、さらに、クロームクローラモジュール４１０８４に関するクロール圧力制御を提供するようにさらに構成することができる。クロームクローラモジュール４１０８４がクローリングをサポートするＵＲＬ（複数の場合もある）は、１つまたは複数のユーザ定義されたロジックアルゴリズムを含むことができる。いくつかの実施形態において、クロームクローラモジュール４１０８４がクローリングをサポートするＵＲＬ（複数の場合もある）は、ユーザ定義されたロジックアルゴリズム（複数の場合もある）を用いて生成され、決定され、または（シードデータベース４１０４から）選択された１つまたは複数のＵＲＬｓを含むことができる。
【００８７】
いくつかの実施形態において、クラウドコンピューティングシステム４１００は、クローラモジュール４１０８と通信している、クローリング圧力制御モジュール４１１８を含むことができる。クローリング圧力制御モジュール４１１８は、同時フェッチ要求のプリセットされたカウントおよび／またはプリセットされたクローリング頻度に従って、クローラモジュール４１０８がウェブサイトデータおよび／またはウェブページデータをフェッチするのを制御するように構成することができる。同時フェッチ要求のカウントおよびプリセットされたクローリングの頻度のさらなる記述は、この開示のどこか（例えば、図７とその説明）に見出すことができる。
【００８８】
いくつかの実施形態において、クローリング圧力制御モジュール４１１８をクラウドコンピューティングシステム４１００に設けることにより、同時フェッチ要求のカウントおよび／またはクローリングプロセスのクローリング頻度を制御して、フェッチされるターゲットウェブサイト（複数の場合もある）によりクロールプロセスがディスカバーされる可能性を低減することができる。いくつかの実施形態において、クラウドコンピューティングシステム４１００は、サービスとしてのプラットフォーム（ＰＡＳＳ）４１２０（ＰＡＡＳ運用および保守プラットフォーム４１２０とも呼ばれる）に基づいて運用および保守プラットフォーム上で実行することができる。いくつかの実施形態において、クラウドコンピューティングシステム４１００をＰＡＡＳ運用および保守プラットフォーム４１２０上で実行するように設定することにより、以下の技術的効果の少なくとも１つを得ることができる。
【００８９】
（１）サービスインスタンス（複数の場合もある）のコンテナ化を実現することができる。サービスインスタンス（複数の場合もある）のコンテナ化の目的は、サービスの移行の促進、サービスインスタンス（複数の場合もある）実行中の環境とリソースの分離の実現、およびその後の自動展開、監視、および／またはサービスの保守の促進を含めることができ、これらは、ＰＡＡＳプラットフォームをインプリメントするために重要であり得る。さらに、サービスプロセス（複数の場合もある）のコンテナ（複数の場合もある）は、ユーザ（複数の場合もある）がカスタムコードロジック（複数の場合もある）を実行するためのサンドボックス（sandbox(es)）（複数の場合もある）とみなすことができる。コンテナ化を実現するための例示ソリューションは、Ｄｏｃｋｅｒを含むことができる。
【００９０】
（２）ワンクリックでの展開および便利な運用と保守を実現することができる。すなわち、ＨＴＴＰ  ＡＰＩインタフェースは、設けることができ、およびウェブサイド制御も提供することができ、これらは、ユーザ（複数の場合もある）がアプリケーションの作成、アプリケーションの管理、アプリケーションのオフライン等のような動作を実行することを可能にする。
【００９１】
（３）コンテナ（複数の場合もある）の自動拡張および／または縮小のための機構、または、同様の機能（複数の場合もある）を実行することができるインタフェースを設けることができる。ＰＡＡＳプラットフォームは、自動コンテナ拡張および／またはコンテナ縮小メカニズムを提供することができ、これは、ＰＡＡＳインタフェースにより、完全にまたは部分的にシールドすることができる。例えば、ＰＡＡＳプラットフォームは、カスタマイズインタフェースを介して、その機構をユーザ（複数の場合もある）に公開することができ、ユーザ（複数の場合もある）は、カスタマイズインタフェースを介してその機構を利用することができる。他の例として、ＰＡＡＳプラットフォームは、コンテナ拡張および／または縮小のための制御インタフェースを公開することができ、特定の戦略（または複数の戦略）をユーザ（複数の場合もある）によりインプリメントするか、または提供することができ、従って、ユーザ（複数の場合もある）は、制御インタフェースを介して、特定のまたはカスタムスキーム（複数の場合もある）を提供して、コンテナ拡張および／または縮小を制御することができる。
（４）サービスインスタンス（複数の場合もある）の柔軟なライフサイクル（複数の場合もある）を実現することができる。理想的なＰＡＡＳプラットフォームは、例えば、オフラインサービスおよび／またはオンラインサービスを含む１つまたは複数のサービスを提供することができる
【００９２】
オフラインサービス（複数の場合もある）の場合、サービスインスタンスは、一般的にコンピューティングモジュールであり得る。オフラインサービス（複数の場合もある）のサービスインスタンス（複数の場合もある）は、長期のライフサイクル要件が無い場合がある。オフラインサービス（複数の場合もある）のサービスインスタンス（複数の場合もある）のライフサイクルに必須の要件が無い場合がある。サービスインスタンス（複数の場合もある）は、ある期間内で対応するコンピューティングタスク（複数の場合もある）を完了させればよい場合もある。この状況下では、ＰＡＡＳプラットフォームは、粗粒度（coarse-grained）コンピューティングタスク（複数の場合もある）の同時制御を提供すればよい場合もある。
【００９３】
オンラインサービス（複数の場合もある）の場合には、２つの状況があり得る。いくつかの実施形態において、不特定の数のインスタンスを維持することができる。インスタンス（複数の場合もある）がウェブサービス（複数の場合もある）の場合、要求（複数の場合もある）（またはクローリングジョブ）は、インスタンス（複数の場合もある）の圧力（複数の場合もある）に基づいて、最も少ない圧力（例えば、コンピューティング圧力）を有するインスタンスに分散することができる。インスタンス（複数の場合もある）の圧力（複数の場合もある）があるレベルを超えた場合、インスタンスの数は、自動的に拡張することができる。このモードは、ユーザ分離を必要としないスパイダークローラモジュール４１０８２のようなパブリックウェブサービスモジュールに適する場合がある。いくつかの実施形態において、維持されたインスタンスの数（またはカウント）が要求（またはクローリングジョブ）の現在の数に等しくなり得る。分離されたインスタンスは、各要求（またはクローリングジョブ）を処理するために開始することができる。このモードは、各要求（またはクローリングジョブ）が他の要求（またはクローリングジョブ）から分離されたリソース（複数の場合もある）を必要とするシナリオに適している場合がある。例示シナリオは、各要求（またはクローリングジョブ）が長期のかつ複雑なリンク選択ロジックを含む場合に言及することができる。
【００９４】
いくつかの実施形態において、要求（複数の場合もある）は、ユーザ（複数の場合もある）により提出されたクローリングジョブ（複数の場合もある）に言及することができる。いくつかの実施形態において、要求（複数の場合もある）は、ユーザ（複数の場合もある）により提出されたクローリングジョブ（複数の場合もある）に、ＰＡＡＳのコンポーネント、またはクラウドコンピューティングシステム４００のコンポーネント間の相互作用において開始された要求（複数の場合もある）に言及することができる。
【００９５】
（５）ＰＡＡＳプラットフォームは、サービスディスカバリのインプリメンテーションをシールドすることができる。すなわち、オンラインサービス（複数の場合もある）の場合、ＰＡＡＳプラットフォーム内のサービスインスタンス（複数の場合もある）のコンテナ化により、およびＰＡＡＳプラットフォームによるサービスインスタンス（複数の場合もある）の自動スケジューリングにより、サービス（複数の場合もある）を外部に公開するサービスディスカバリメカニズムは、ＰＡＡＳプラットフォームによりインプリメントすることができる。
【００９６】
ここで、使用されるように、サービスディスカバリは、コンピュータネットワーク上で、またはクラウドコンピューティングシステム４１００内のデバイス（複数の場合もある）およびデバイス（複数の場合もある）により提供されたサービス（複数の場合もある）の自動検出に言及することができる。例示サービスディスカバリは、リンクディスカバリを含むことができる。いくつかの実施形態において、外部は、ＰＡＳＳプラットフォームの外部、またはクラウドコンピューティングシステム４１００の外部を指すことができる。
【００９７】
（６）複雑なモニタリングメカニズムを提供することができる。モニタリングメカニズムは、インスタンスナンバーのモニタリング、インスタンス（複数の場合もある）により占有されるリソース（複数の場合もある）（例えば、ＣＰＵリソース、メモリ、帯域幅）のモニタリング、ログモニタリング等を含むことができる。
【００９８】
クラウドコンピューティングシステム４１００のモジュールは、有線接続または無線接続を介して、互いに接続または通信することができる。有線接続は、金属ケーブル、光ケーブル、ハイブリッドケーブル等、またはそれらの任意の組み合わせを含むことができる。無線接続は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ブルートゥース（登録商標）、ＺｉｇＢｅｅ（登録商標）、近距離無線通信（ＮＦＣ）等、またはそれらの任意の組み合わせを含むことができる。いくつかの実施形態において、２以上のモジュールを単一モジュールに結合することができ、あるいは、モジュールの任意の１つを２以上のユニットに分割することができる。例えば、クラウドコンピューティングシステム４１００は、さらにクローリングジョブ（複数の場合もある）に関するコンフィグ情報を含むコンフィグファイル（複数の場合もある）を記憶するように構成された、ストレージシステムを含むことができる。他の例として、クラウドコンピューティングシステム４１００は、さらに、ユーザ（複数の場合もある）により送信された、クローリングジョブ（複数の場合もある）のインプリメンテーションを制御するように構成された、制御モジュールを含むことができる。
【００９９】
図５は、この開示のいくつかの実施形態に従う他の例示クラウドコンピューティングシステムを図示するブロック図である。図６は、この開示のいくつかの実施形態に従うクラウドコンピューティングシステムの例示データ相互作用プロセスを図示する概略図である。クラウドコンピューティングシステム５２００は、運用および保守プラットフォーム４１２０と通信しているＡＰＩアグリゲーションプラットフォーム５２０２を含むことができる。クラウドコンピューティングシステム５２００は、１つまたは複数のコアサービスおよび／または１つまたは複数のパブリックサービスを含むことができる。いくつかの実施形態において、コアサービス（複数の場合もある）および／またはパブリックサービス（複数の場合もある）は、運用および保守プラットフォーム４１２０上で実行することができる。コアサービスは、リンクセクションサービス５２０４、シードデータベースサービス５２０６、フェッチングサービス５２０８、プロキシサービス５２１０等を含むことができる。いくつかの実施形態において、コアサービスは、解析サービス（図示せず）を含むことができる。パブリックサービスは、ストレージシステム５２１２、メッセージキュー５２１４、ｃｒｏｎｔａｂサービス５２１６等を含むことができる。
【０１００】
図５および図６に示すように、この開示のいくつかの実施形態によれば、クラウドコンピューティングシステム５２００は、ウェブページクローリングサブシステムおよび／またはウェブページ解析サブシステムを含むことができる。２つのサブシステムの機能は、独立させることができる。データストリーム（２つのサブシステムに関連づけられた）は、ＨＤＦＳによりデカップリングすることができる。２つのサブシステムに関連づけられたジョブ管理システムは、別個に実行することができる。いくつかの実施形態において、ウェブページクローリングサブシステムは、シードデータベース４１０４、ジョブジェネレータ４１０６、クローラモジュール４１０８、プロキシモジュール４１１６、およびクローリング圧力制御モジュール４１１８を含むことができる。いくつかの実施形態において、ウェブページ解析サブシステムは、リンクディスカバーモジュール４１１０、および解析モジュール４１１４を含むことができる。
【０１０１】
図４および図６に示すように、ウェブページクローリングサブシステムは、ＡＰＩ４１０２を介して送信された１つまたは複数のＵＲＬｓ、および／またはＡＰＩ４１０２を介してクローリングジョブ（複数の場合もある）を生成／削除するための、１つまたは複数の命令または要求を取得することができる。ウェブページ解析サブシステムは、ＡＰＩ４１０２を介して送信された、１つまたは複数のアルゴリズム／アプリケーション、およびまたは、ＡＰＩ４１０２を介して解析アルゴリズム（複数の場合もある）／アプリケーション（複数の場合もある）を編集するための命令または要求を取得することができる。
【０１０２】
特に、いくつかの実施形態において、ウェブページまたはＡＰＩアグリゲーションプラットフォーム５２０２を介してユーザにより送信されたジョブ（複数の場合もある）は、２つの部分を含むことができる。いくつかの実施形態において、ジョブ（複数の場合もある）の第１の部分は、ウェブページクローリング、ウェブサイトクローリング、および／またはストレージ（例えば、ＨＤＦＳにおける）の機能（複数の場合もある）（またはサービス（複数の場合もある））を使用することができるクローリングジョブ（複数の場合もある）（例えば、ユーザ（複数の場合もある）により作成または送信された）を指すことができる。いくつかの実施形態において、ジョブ（複数の場合もある）の第２の部分は、解析ジョブ（複数の場合もある）を指すことができる。ユーザ（複数の場合もある）が（クラウドコンピューティングシステム５２００の）解析機能（またはサービス）を使用する必要がある場合、ユーザ（複数の場合もある）は、解析ジョブ（複数の場合もある）を作成し、解析データソース（複数の場合もある）（例えば、ＨＤＦＳ、時間効率の良いストレージシステム）、解析結果（複数の場合もある）のためのストレージロケーション、または、システムが提供するまたはカスタム解析アルゴリズムパッケージ等を指定することができる。
【０１０３】
ＡＰＩアグリゲーションプラットフォーム５２０２は、図４に示すＡＰＩ４１０２に提供されたサービスカプセル化であり得る。すなわち、ウェブページクローリングサブシステムとウェブページ解析サブシステムは、対応するサービス（複数の場合もある）を別個に外部に提供することができる。ウェブページクローリングサブシステムとウェブページ解析サブシステムは、ＨＴＴＰサービス（複数の場合もある）を、ＡＰＩアグリゲーションプラットフォーム５２０２を介して、均一に提供することができる。
【０１０４】
コアサービスは、リンク選択サービス５２０４、シードデータベースサービス５２０６、フェッチングサービス５２０８およびプロキシサービス５２０１を含むことができる。コアサービス（複数の場合もある）を提供するウェブページクローリングサブシステムのコンポーネントは、シードデータベース（例えば、シードデータベース４１０４）、デフォルトリンク選択モジュール（例えば、ジョブジェネレータ４１０６）、ウェブページダウンロードモジュール（すなわち、フェッチャ（fetcher））、クロームクローラモジュール（例えば、クロームクローラモジュール４１０８４）、リンクディスカバーモジュール（例えば、リンクディスカバーモジュール４１１０）、およびプロキシモジュール（例えば、プロキシモジュール４１１６）を含むことができる。
【０１０５】
この開示において、シードデータベースは、一般的にウェブサイトクローリングジョブ（複数の場合もある）およびウェブページクローリングジョブ（複数の場合もある）に使用することができる。シードデータベースの使用において、ウェブサイトクローリングジョブ（複数の場合もある）とウェブページクローリングジョブ（複数の場合もある）との間に差異は無い。しかしながら、ウェブサイトクローリングジョブ（複数の場合もある）とウェブページクローリングジョブ（複数の場合もある）のためのリンク選択優先度は、異ならせることができる。例えば、ウェブページクローリングジョブ（複数の場合もある）のためのリンク選択優先度は、ウェブサイトクローリングジョブ（複数の場合もある）のそれよりも高くすることができる。ウェブサイトクローリングジョブ（複数の場合もある）において、１分あたりのリンク選択ロジックは、リンク選択動作（複数の場合もある）に使用することができる。あるいは、いくつかの実施形態において、リンクはジョブジェネレータのクローリング同時制御の下で可能なかぎり配信することができ、（例えば、最も可能なリンク選択と配信戦略をリンク選択動作に使用することができる）、それにより、クラウドコンピューティングシステム５２００のクローリング能力をフルに使用することができ、各ユーザのウェブページクローリングジョブ（複数の場合もある）および／またはウェブサイトクローリングジョブ（複数の場合もある）を最大速度でインプリメント可能にすることができる。
【０１０６】
いくつかの実施形態において、シードデータベースのサービスとしてのソフトウェアに基づいて実現可能性解析を参照すると、この開示に開示されたシードデータベースは、（クラウドコンピューティングシステム５２００またはＡＰＩから）分離されない場合があり、カスタムリンク選択ロジックは、使用されない場合がある。いくつかの実施形態において、この開示で開示されたシードデータベースは、シードデータベースに記憶されたリンク（またはＵＲＬｓ）に単純なトラバーサル（traversal）動作を可能にすることができる。いくつかの実施形態において、シードデータベースは、ユーザ（複数の場合もある）がリンク選択動作（複数の場合もある）をカスタマイズ可能にしない場合がある。いくつかの実施形態において、シードデータベースは、クラウドコンピューティングシステム４１００または５２００で使用されない場合がある。いくつかの実施形態において、ユーザ（複数の場合もある）は、リンク選択動作（複数の場合もある）をカスタマイズできる場合がある。
【０１０７】
それゆえ、（クラウドコンピューティングシステム５２００から、またはＡＰＩアグリゲーションプラットフォーム５２０２から）分離され、カスタムリンク選択動作を可能にするシードデータベースに対する１つまたは複数の代替があり得る。ＡＰＩアグリゲーションプラットフォーム５２０２のＱＰＳ制約を用いてユーザ（複数の場合もある）がシードデータベースを攻撃するのを防ぐことができる。ユーザ（複数の場合もある）は、サーバサイドスクリプト（server-side script）を送信してシードデータベースにクエリ（query）を実行できない場合がある。ユーザ（複数の場合もある）が、リンク選択動作（複数の場合もある）をカスタマイズしたい場合、ユーザ（複数の場合もある）は、プラットフォームにより提供されたリンク選択サービス５２０４（例えば、シードデータベースおよび／またはジョブジェネレータにより提供されたサービス（複数の場合もある）により提供されたサービス（複数の場合もある）を使用することができ、あるいは、ユーザ（複数の場合もある）は、カスタムリンク選択サービス（シードデータベースおよびジョブジェネレータを含む）をプラットフォームに提供する必要がある場合がある。いくつかの実施形態において、プラットフォーム（ＡＰＩアグリゲーションプラットフォーム５２０２）は、ユーザ（複数の場合もある）が情報をスパイダークローラモジュール（例えば、スパイダークローラモジュール４１０８２）に配信するためのインタフェースを開くことができる。ユーザ（複数の場合もある）は、ウェブページクローリング態様を用いてＵＲＬ（複数の場合もある）を配信することができ、サービス（複数の場合もある）は、ユーザ（複数の場合もある）により展開することができる。あるいは、ユーザ（複数の場合もある）は、ＰＡＡＳプラットフォームを介してＵＲＬ（複数の場合もある）を配信することができる。
【０１０８】
ウェブページクローリングサブシステムの外部インタフェースは、シードデータベースのアップストリームモジュールに対してのみ開くことができる。原理的には、ユーザ（複数の場合もある）は、ＵＲＬ（複数の場合もある）をスパイダークローラモジュール（例えば、スパイダークローラモジュール４１０８２）に直接送信することはできない。さらに、ジョブジェネレータ（例えば、ジョブジェネレータ４１０６）の最適配信戦略を達成するために、スパイダークローラモジュール（例えば、スパイダークローラモジュール４１０８２）は、各ウェブサイトのフェッチングの輻輳状態をアップストリームモジュール（例えば、ジョブジェネレータ４１０６）に提供することができる。
【０１０９】
フェッチングサービス５２０８のインプリメンテーションにおいて、フェッチングサービス５２０８は、スパイダークローラサービスとクロームクローラサービスを含むことができる。特に、レンダリングされたウェブページおよび／またはユーザ定義されたページに対するJavaScriptレンダリング動作の要求は、クロームクローラサービスを用いて応答および／または処理することができる。汎用ｈｔｍｌパージをダウンロードする要求は、スパイダークローラサービスを用いて応答または処理することができる。スパイダークローラサービスは、パフォーマンス上の理由から使用することができる。例えば、スパイダークローラサービスが１２コアＣＰＵ物理マシン上で実行される場合、数千のＱＰＳを達成することができる。クロームクローラサービスが１２コアＣＰＵ物理マシン上で実行される場合、ＱＰＳは、１０未満になり得る。実際のクローリングシナリオでは、JavaScriptレンダリング動作を伴わないクローリングジョブ（複数の場合もある）は、大きな割合を占める可能性がある。プラットフォーム（例えば、ＡＰＩアグリゲーションプラットフォーム５２０２）は、毎日数億ものクローリングジョブに直面する可能性があり、クロームクローラサービスの使用だけでは、クローリング需要を満たせない可能性がある。クロームクローラサービスとスパイダークローラサービスは、完全に分離することができる。クロームクローラサービスとスパイダークローラサービスの機能の違いは、シードデータベースサービス５２０６に反映させることができ、又は考慮することができる。シードデータベースサービス５２０６は、クロームクローラサービスとスパイダークローラサービスのための２種類のテーブル（例えば、２つのデータベース）を提供することができる。クロームクローラサービスとスパイダークローラサービスのためのリンク選択動作は、異なるジョブジェネレータにより実行することができる。クロームクローラサービスのクローリング圧力制御は、スパイダクローリングサービスのクローリング圧力制御と異なるので、クロームクローラサービスのクローリング圧力制御は、ＨＴＴＰｓを用いてプロキシモジュールによりインプリメントすることができる。
【０１１０】
プロキシサービス５２１０は、プラットフォームフローのためのイクスポートを提供することができる。プロキシサービス５２１０のフロー制御プロセスは、以下のように記載することができる。国内および海外のＨＴＴＰプロキシとＨＴＴＰＳプロキシを収集し、検証することができる。１つ又は複数の信頼できるプロキシは、各フェッチ要求に対してランダムに割り当てることができる。クローリング圧力制御は、クロームクローラサービスのために提供することができる。
【０１１１】
クロームクローラサービスおよび／またはスパイダークローラサービスのダウンストリームサービス（複数の場合もある）は、パブリックサービス（複数の場合もある）を含むことができる。パブリックサービス（複数の場合もある）は、ストレージシステム５２１２（例えば、コンフィグセンタ）、メッセージキュー５２１４、およびcrontabサービス５２１６を含むことができる。ストレージシステム５２１２は、クローリング圧力制御（例えば、パラメータ（複数の場合もある）は、図６に示す１つまたは複数のコンフィグファイル６３０２に記憶することができる）を記憶するように構成することができる。パラメータは、例えば、同時フェッチ要求のカウント、クローリング周波数等を含むことができる。
【０１１２】
メッセージキュー５２１４は、フェッチされるＵＲＬｓの第１のキューを記憶するように構成することができる。クローラモジュール（例えば、クローラモジュール４１０８）は、１つまたは複数のシードＵＲＬｓを選択することができる。クローラモジュール４１０８は、１つまたは複数のシードＵＲＬｓをフェッチされるＵＲＬｓの第１のキューに入れることができる。クローラモジュール４１０８は、フェッチするＵＲＬｓ第１のキューから１つのＵＲＬを選択することができる。クローラモジュール４１０８は、選択されたＵＲＬに対応するドメイン名サーバ（ＤＮＳ）を解析することによりホストのＩＰアドレスを決定することができる。クローラモジュール４１０８は、選択されたＵＲＬに対応するオリジナルウェブページ（複数の場合もある）をダウンロードし、記憶することができる。クローラモジュール４１０８は、選択されたＵＲＬをフェッチしたＵＲＬｓの第２のキューに入れることができる。
【０１１３】
いくつかの実施形態において、ダウンロードしたオリジナルのウェブページ（複数の場合もある）は、ＨＤＦＳに直接記憶することができ、リンクディスカバー動作を同時に行うことが出来る。２種類のリンクディスカバー動作があり得る。例えば、クローラモジュール４１０８によりフェッチしたウェブページデータのコピーファイル（複数の場合もある）をリンクディスカバーモジュール４１１０（例えば、第１のリンク生成ロジックモジュール４１１０２）に送信し、オンラインリンクディスカバーオペレーションを実行することができる。他の例として、オフラインリンクディスカバーモジュール４１１０（例えば、第２のリンク生成ロジックモジュール４１１０４）を、ウェブページ解析サブシステム内に作り、ＨＤＦＳに記憶したデータのオフラインバッチ処理を行い、新しいリンク（複数の場合もある）をディスカバーすることができる。
【０１１４】
いくつかの実施形態において、リンクは、ＵＲＬを参照することができる。いくつかの実施形態において、オンラインリンクディスカバリ動作において、クローラモジュール４１０８によりフェッチされたウェブページデータは、第３のメッセージキュー（例えば、Ｋａｆｋａ）に記憶することができ、リンクディスカバーモジュール４１１０（例えば、第１のリンク生成ロジックモジュール４１１０２）は、第３のメッセージキューからウェブページデータを取得することができ、オンラインリンクディスカバー動作を実行することができる。
【０１１５】
いくつかの実施形態において、第４のメッセージキューを用いてリンク選択サービス（またはジョブジェネレータ４１０６）により選択されたＵＲＬｓを記憶することができ、クローラモジュール４１０８は、第４のメッセージキューから選択されたＵＲＬｓを取得することができる。いくつかの実施形態において、リンクディスカバーモジュール（第１のリンク生成ロジックモジュール４１１０２および／または第２のリンク生成ロジックモジュール４１１０４）によりディスカバーされた新しいリンク（複数の場合もある）は、第５のメッセージキューに記憶することができ、シードデータベースサービス（またはシードデータベース４１０４）は、第５のメッセージキューから新しいリンク（複数の場合もある）を取得し、新しいリンク（複数の場合もある）をシードデータベース４１０４に記憶することができる。
【０１１６】
crontabサービス５２１６は、ジョブジェネレータ（例えば、ジョブジェネレータ４１０６）のプリサービス（pre-service）として構成することができる。いくつかの実施形態において、crontabサービス５２１６は、Ｌｉｎｕｘ（登録商標）システムのビルトインサービスに属することができ、クローリングジョブに対するジョブジェネレータ４１０６の割りあて動作を制御するように構成することができる。いくつかの実施形態において、crontabサービス５２１６は、分散された独立したサービスとして構成することができる。
【０１１７】
ウェブページ解析サブシステムは、基礎となるＰＡＡＳプラットフォーム４１２０に基づいて構築した解析システムであり得る。ウェブページ解析サブシステムは、多機能を有し、ウェブクローリングサブシステムと自然に接続することができる。ウェブページ解析サブシステムは、ＰＡＡＳに基づいてサービス（複数の場合もある）を提供することができる。ユーザ（複数の場合もある）がウェブページ解析サブシステムにおいて解析テンプレート（複数の場合もある）を作成する場合、ｗｅｂページ解析サブシステムは、オフライン解析タスクをバッチでかつ周期的に実行し、ＨＤＦＳに記憶された解析データを、ユーさ定義された形式に解析し、および／またはデータをユーザ定義された形式でＨＤＦＳに記憶することができる。
【０１１８】
クラウドコンピューティングシステム５２００のインフラストラクチャは、ＰＡＡＳ運用および保守プラットフォーム４１２０（すなわち、ＰＡＡＳプラットフォーム）により実現することができる。ウェブページクローリングジョブ（複数の場合もある）及び／またはウェブサイトクローリングジョブ（複数の場合もある）は、ダイナミックウェブページ（複数の場合もある）に対するミラーリングオペレーション（複数の場合もある）とみなすことができるので、他のサブシステムの運用および保守プラットフォームとして機能する運用および保守プラットフォーム４１２０は、以下の外部とのインタフェースの１つまたは複数を提供することができる。
Ａ、ミラーリングを作るためのインタフェース
Ｂ、ミラーリングを除去するためのインタフェース
Ｃ、ミラーリング情報を管理するためのインタフェース
Ｄ、ミラーリングにより提供されたサービスを呼び出すためのインタフェース。
各登録された画像に対して、ＨＴＴＰインタフェースを提供することができる。ウェブページクローリングサブシステムは、ＨＴＴＰインタフェースを呼び出すことによって対応するサービス（複数の場合もある）を呼び出すことができる。
【０１１９】
ここに使用されるように、画像は、ルートファイルシステム変更の順序付けられた収集およびコンテナランタイム内で使用するための対応する実行パラメータを参照することができる。この開示の実施形態の動作のシーケンスは、調整することができ、動作は、この開示のいくつかの実施形態に従ってマージおよび／または削除することができる。この開示の端末デバイスのモジュールおよび／またはユニットは、この開示のいくつかの実施形態に従って、結合、分割および／または削除することができる。
【０１２０】
当業者は、この開示の実施形態のすべてまたは一部は、関連するハードウェアに指示するプログラムにより完了することができることを理解することができる。プログラムは、コンピュータが、データを保持または記憶するために使用可能な、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、プログラマブルリードオンリメモリ（ＰＲＯＭ）、イレーザブルプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、オンタイムプログラマブルリードオンリメモリ（ＯＴＰＲＯＭ）、電子的にイレーザブルなプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、任意の他の光ディスクストレージ、磁気ディスクストレージ、磁気テープストレージ、又は任意の他の可読媒体を含む、コンピュータ可読記憶媒体に記憶することができる。
【０１２１】
この開示の技術的ソリューションは、添付図面を参照して、上記で詳細に説明することができる。この開示は、クラウドコンピューティングシステムを提供することができる。この開示のクラウドコンピューティングのためのいくつかのシステムと方法によれば、ウェブページデータおよび／またはウェブサイトデータをフェッチすることができる。クラウドコンピューティングシステムは、ネットワークデータ全体のフェッチングをサポートすることができ、相対的に高い普遍性を有することができる。保守および運用コストは、低減することができ、有効データをフェッチする信頼性を改善することができる。クローリング圧力は、フェッチングプロセス期間中、正確に制御することができる。さらに、コンテナ拡張および／またはコンテナ縮小のための柔軟に編集可能なインタフェースをユーザ（複数の場合もある）に提供することができる。フェッチされたデータは、Ｈａｄｏｏｐ分散ファイルシステム（ＨＤＦＳ）に記憶することができ、データ相互作用圧力は、相対的に低くすることができ、データの読取り効率は、相対的に高くすることができる。
【０１２２】
上述した記載は、この開示の好適実施形態に過ぎず、この開示を限定することを意図したものではない。種々の変更及び変形をこの開示に行うことができる。この開示の精神および原理内でなされた任意の修正、同等の置換、改善等も、この開示の範囲によりカバーされるべきである。
【０１２３】
クラウドコンピューティングシステム５２００内のモジュールは、有線接続または無線接続を介して互いに接続または通信することができる。有線接続は、金属ケーブル、光ケーブル、ハイブリッドケーブル等、またはそれらの任意の組み合わせを含むことができる。無線接続は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ブルートゥース（登録商標）、ＺｉｇＢｅｅ、近距離無線通信（ＮＦＣ）等、またはそれらの任意の組み合わせを含むことができる。いくつかの実施形態において、２以上のモジュールは、単一モジュールに結合することができ、モジュールのいずれか一つは、２以上のユニットに分割することができる。
【０１２４】
図６は、この開示のいくつかの実施形態に従うクラウドコンピューティングシステムの例示データ相互作用プロセスを図示する概略図である。いくつかの実施形態において、ＡＰＩ４１０２を介して一人または複数のユーザにより、１つまたは複数のクローリングジョブを、生成（または送信、または要求）することができ、または削除することができる。例えば、ユーザ（複数の場合もある）は、ＡＰＩ４１０２を介して１つまたは複数のＵＲＬｓを送信することにより、クローリングジョブ（複数の場合もある）を生成することができる。１つまたは複数のコンフィグファイル６３０２は、クローリングジョブ（複数の場合もある）を解析することにより生成することができる。コンフィグファイル（複数の場合もある）は、クローリングジョブ（複数の場合もある）に関連するコンフィグ情報を含むことができる。１つ又は複数のＵＲＬｓはシードデータベース４１０４に記憶することができる。いくつかの実施形態において、シードデータベース４１０４は、ＵＲＬ（複数の場合もある）、ＵＲＬ（複数の場合もある）の優先度情報、ＵＲＬ（複数の場合もある）のフェッチング結果（例えば、成功、失敗）に関連する情報等を記憶することができる。ジョブジェネレータ４１０６は、シードデータベース４１０４から少なくとも１つのＵＲＬを選択することができる。例えば、ジョブジェネレータ４１０６は、クローラモジュール４１０８内で、実行されるために待機している第１のカウントのタスクに基づいて、およびシードデータベース４１０４内のＵＲＬｓの優先度に従って、シードデータベース４１０４から少なくとも１つのＵＲＬを選択することができる。ジョブジェネレータ４１０６は、選択されたＵＲＬに基づいてタスクを生成することができる。ジョブジェネレータ４１０６は、タスクを対応するクローラモジュール（例えば、スパイダークローラモジュール４１０８２、またはクロームクローラモジュール４１０８４）にディスパッチすることができる。例えば、ジョブジェネレータ４１０６は、コンフィグファイル６３０２に記憶されたタスクに関連づけられた、コンフィグ情報に基づいて対応するクローラモジュールに、タスクをディスパッチすることができる。クローラモジュール４１０８は、タスクに関連づけられたＵＲＬに従って、少なくとも１つのウェブページをフェッチすることができる。例えば、クローラモジュール４１０８は、プロキシモジュール４１１６の１つまたは複数のプロキシを用いて、タスクに関連付けられたＵＲＬに従う少なくとも１つのウェブページをフェッチすることができる。クローラモジュール４１０８は、少なくとも１つのウェブページに関連付けられたフェッチされたウェブページを分散ファイルシステム（例えば、ＨＤＦＳ）の１つまたは複数の分散ストレージノード４１１２に記憶することができる。解析モジュール４１１４は、少なくとも１つのウェブページを解析することにより少なくとも１つのウェブページのエレメント情報を抽出することができる。例えば、解析モジュール４１１４は、ＡＰＩ４１０２を介してユーザ（複数の場合もある）により送信されたおよび／または編集された１つまたは複数の解析アルゴリズムに従う、少なくとも１つのウェブページを解析することができる。解析モジュール４１１４は、エレメント情報を、分散ファイルシステム（例えば、ＨＤＦＳ）の１つまたは複数の分散されたストレージノード４１１２に記憶することができる。いくつかの実施形態において、リンクディスカバーモジュール４１１０は、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページから、１つまたは複数のリンクしたＵＲＬｓを抽出することができる。リンクディスカバーモジュール４１１０は、１つまたは複数の抽出されたリンクしたＵＲＬｓを、シードデータベース４１０４に記憶することができる。
【０１２５】
いくつかの実施形態において、リンクしたＵＲＬ（複数の場合もある）をディスカバーする前に、リンクディスカバーモジュール４１１０は、クローリングジョブに関連づけられた対応するコンフィグ情報に基づいて、新しいリンク（複数の場合もある）をディスカバーするかどうかを判断することができる。例えば、クローリングジョブがウェブページクローリングジョブである場合、リンクディスカバーモジュール４１１０は、新しいリンク（複数の場合もある）をディスカバーしないと判断することができる。他の例として、クローリングジョブがウェブサイトクローリングジョブである場合、リンクディスカバーモジュール４１１０は、新しいリンク（複数の場合もある）をディスカバーすると判断することができる。
【０１２６】
いくつかの実施形態において、ユーザ（複数の場合もある）は、ＡＰＩ４１０２を介して、ウェブクローリングサブシステムおよび／またはウェブページ解析サブシステムのコンポーネント、例えば、シードデータベース４１０４、解析モジュール４１１４、リンクディスカバーモジュール４１１０等を設定することができる。いくつかの実施形態において、ユーザ（複数の場合もある）は、ＡＰＩ４１０２を介して、リンクディスカバリに関する情報（例えば、新しいリンク（複数の場合もある）をディスカバーするかどうか、オンラインまたはオフラインリンクディスカバリ等）を設定することができる。対応するコンフィグ情報は、コンフィグファイル（複数の場合もある）６３０２に記憶することができる。
【０１２７】
いくつかの実施形態において、シードデータベース４１０４、クローラモジュール４１０８、リンクディスカバリモジュール４１１０等は、運用および保守プラットフォーム４１２０上で実行するコンテナとして、別個にインプリメントすることができる。いくつかの実施形態において、ユーザがクローリングジョブを送信した場合、運用および保守プラットフォーム４１２０は、クローリングジョブをインプリメントするために、１つまたは複数のコンテナを開始することができる。
【０１２８】
図７は、この開示のいくつかの実施形態に従うウェブクローリングのための例示プロセスを図示するフローチャートである。プロセス７００は、クラウドコンピューティングシステム１００、クラウドコンピューティングシステム４１００、あるいはクラウドコンピューティングシステム５２００により実行することができる。例えば、プロセス７００は、ストレージＲＯＭ２３０またはＲＡＭ２４０に記憶された命令のセットとしてインプリメントすることができる。図４乃至５のプロセッサ２２０および／またはモジュールは、命令のセットを実行することができ、命令を実行すると、プロセッサ２２０および／またはモジュールは、プロセス７００を実行するように設定することができる。下記に提示した図示プロセスの動作は、例示目的であることを意図している。いくつかの実施形態において、プロセス７００は、記載されていない１つまたは複数の追加の動作、および／または上述した１つまたは複数の動作なしに、達成することができる。さらに、図７に示し、以下に説明するプロセス７００の動作は、限定することを意図したものではない。
【０１２９】
ステップ７１０において、アプリケーションプログラムインタフェース（ＡＰＩ）４１０２は、１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を含む要求を受信することができる。いくつかの実施形態において、要求は、ウェブクローリングの要求であり得る。例えば、要求は、クローリングジョブであり得る。クローリングジョブは、ウェブページクローリングジョブ、および／または、ウェブサイトクローリングジョブを含むことができる。いくつかの実施形態において、要求は、１つまたは複数のＵＲＬｓを含むことができる。ここに使用されるように、ＵＲＬ（ウェブアドレスとも呼ばれる）は、コンピュータネットワークおよび／またはそれを検索するためのメカニズム上の位置を指定するウェブリソースを指すことができる。
【０１３０】
ステップ７２０において、サーバ１１０（例えば、解析モジュール４１１４）は、１つまたは複数のＵＲＬｓをシードデータベースに記憶することができる。いくつかの実施形態において、サーバ１１０は、要求を解析することにより１つまたは複数のＵＲＬｓを抽出することができる。サーバ１１０は、１つ又は複数の抽出されたＵＲＬｓをシードデータベース（例えば、シードデータベース４１０４）に記憶することができる。ここで使用するように、シードデータベースは、クローリングに適格なＵＲＬｓのストレージに使用されるデータ構造を指すことができる。データ構造は、例えば、ＵＲＬ（複数の場合もある）を追加する、クローリングのためのＵＲＬ（複数の場合もある）を選択すること等を含む動作をサポートすることができる。いくつかの実施形態において、シードデータベースは、１つまたは複数のサブデータベース（例えば、図４に記載したマッピングテーブル（複数の場合もある））を含むことができる。各サブデータベースは、クローリングジョブに対応させることができる。サーバ１１０は、同じクローリングジョブに関連づけられた１つまたは複数のＵＲＬｓを対応するサブデータベースに記憶することができる。
【０１３１】
ステップ７３０において、サーバ１１０（例えば、解析モジュール４１１４）は、要求を解析することによりコンフィグファイルを生成することができる。いくつかの実施形態において、コンフィグファイルは、クローリングジョブに関連するコンフィグ情報を含むことができる。いくつかの実施形態において、クローリングジョブに関連するコンフィグ情報は、ユーザのアイデンティティ情報（例えば、識別（ＩＤ））、クローリングジョブのタイプ（例えば、ウェブサイトデータクローリングおよび／またはウェブページデータクローリング）、抽出するウェブページに関連づけられたエレメント情報、リンク選択ロジック、リンクディスカバリに関連する情報等を含むことができる。ここに使用されるように、「ウェブページデータクローリング」は、特定のウェブページ内のデータ（例えば、テキスト、画像）をフェッチするプロセスを指すことができる。「ウェブサイトデータクローリング」は、特定のウェブサイト（例えば、特定のウェブサイトの１つまたは複数のウェブページ）内のデータ（例えば、テキスト、画像）をフェッチするプロセスおよび特定のウェブページ（複数の場合もある）に関連づけられた１つまたは複数のリンクしたＵＲＬｓを指すことができる。リンクしたＵＲＬのさらなる記載は、この開示のどこか（例えば、図８およびその説明）に見出すことができる。いくつかの実施形態において、特定のウェブページに関連づけられたエレメント情報は、テキスト情報、非テキスト情報（例えば、静止画像、アニメーション画像、オーディオ、ビデオ）、インタラクティブ情報（例えば、ハイパーリング）等をを含むことができる。いくつかの実施形態において、サーバ１１０は、コンフィグファイルを、クラウドコンピューティングシステム１００のストレージシステム（例えば、ストレージシステム５２１２）または外部ストレージシステムに記憶することができる。
【０１３２】
ステップ７４０において、サーバ１１０（例えば、ジョブジェネレータ４１０６）は、実行されるために待機している第１のカウントのタスクに基づいてシードデータベースから少なくとも１つのＵＲＬを選択することができる。いくつかの実施形態において、サーバ１１０は、実行されるために待機している第１のカウントのタスクを識別することができる。例えば、サーバ１１０は、クローラモジュール（例えば、クローラモジュール４１０８）内で実行されるために待機している第１のカウントのタスクを識別することができる。サーバ１１０は、シードデータベース（例えば、シードデータベース４１０４）内の第２のカウントのＵＲＬｓを識別することができる。サーバ１１０は、第１のカウントおよび／または第２のカウントに基づいてＵＲＬを選択するかどうかを判断することができる。例えば、サーバ１１０は、第１のカウントおよび／または第２のカウントが、１つまたは複数の基準を満足するかどかを判断することができる。１つまたは複数の基準は、第１のカウントが第１のしきい値未満である、第２のカウントが第２のしきい値より大きい等を含むことができる。第１のしきい値は、クローラモジュールで実行されるために待機しているタスクの最大カウント制限に関連することができる。たとえば、第１のしきい値は、最大カウント制限、または最大カウント制限に係数を乗算したものに等しくすることができる。第１のしきい値および／または第２のしきい値は、ユーザにより手動で設定することができ、あるいは、デフォルト設定に従ってクラウドコンピューティングシステム１００の１つまたは複数のコンポーネントにより決定することができる。例えば、第２のしきい値は０であり得る。第１のカウントおよび／または第２のカウントが、１または複数の基準を満足することに応答して、サーバ１１０は、シードデータベースから少なくとも１つのＵＲＬを選択することができる。
【０１３３】
いくつかの実施形態において、シードデータベース４１０４から選択された少なくとも１つのＵＲＬのカウントは、第１のカウントおよび／または第２のカウントに関連づけることができる。いくつかの実施形態において、クローラモジュール（例えば、クローラモジュール４１０８）は、実行されるために待機しているタスクの最大カウント制限を有することができる。サーバ１１０は、最大カウント制限、第１のカウントおよび／または第２のカウントに基づいてシードデータベースから、少なくとも１つのＵＲＬのカウントを決定することができる。いくつかの実施形態において、シードデータベース４１０４から選択された少なくとも１つのＵＲＬのカウントは、第２のカウント、および／または最大カウント制限と第１のカウントとの間の差分と同じくらいの大きさであり得る。単なる例示として、クローラモジュール内で実行されるために待機しているタスクの最大カウント制限が１００００である場合、第１のカウントは９０００であり、第２のカウントは、１０００より大きく、サーバ１１０はシードデータベースから１０００個のＵＲＬｓ（すなわち、１００００−９０００＝１０００）を選択することができる。
【０１３４】
いくつかの実施形態において、サーバ１１０は、シードデータベース内のＵＲＬｓの優先度に基づいて、シードデータベースから少なくとも１つのＵＲＬを選択することができる。シードデータベース内のＵＲＬｓの優先度は、ユーザにより手動で設定することができるか、あるいはデフォルト設定に従って、クラウドコンピューティングシステム１００の１つ又は複数のコンポーネントにより決定することができる。いくつかの実施形態において、サーバ１１０は、シードデータベース内におけるＵＲＬｓの各ＵＲＬの長さに基づいてシードデータベースから、少なくとも１つのＵＲＬを選択することができる。例えば、相対的に短い長さを有するＵＲＬは、相対的に高い優先度を有することができる。いくつかの実施形態において、サーバ１１０は、シードデータベース内のＵＲＬｓの各ＵＲＬのレベルに基づいて、シードデータベースから少なくとも１つのＵＲＬを選択することができる。例えば、相対的に低いレベルを有するＵＲＬは相対的に高い優先度を有することができる。いくつかの実施形態において、サーバ１１０は、ＵＲＬに関連づけられたクローリングジョブに関連するコンフィグ情報に基づいて、シードデータベースから少なくとも１つのＵＲＬを選択することができる。例えば、ウェブページデータクローリングジョブに関連づけられたＵＲＬは、相対的に高い優先度を有することができる。
【０１３５】
ステップ７５０において、サーバ１１０（例えば、ジョブジェネレータ４１０６）は、少なくとも１つの選択されたＵＲＬの各々に基づいてタスクを生成する。いくつかの実施形態において、サーバ１１０は、ＵＲＬに関連づけられたタスクに関連するコンフィグ情報に基づいて、選択されたＵＲＬに関連づけられたタスクを生成することができる。各タスクは、ＵＲＬに対応することができる。クローリングジョブは、複数のタスクに対応させることができる。
【０１３６】
ステップ７６０において、サーバ１１０（例えば、ジョブジェネレータ４１０６）は、タスクを、対応するクローラモジュール（例えば、スパイダークローラモジュール４１０８２、クロームクローラモジュール４１０８４）にディスパッチして、クローラモジュールに、そのタスクに関連れづけられたＵＲＬに従って、少なくとも１つのウェブページを、フェッチさせることができる。いくつかの実施形態において、サーバ１１０は、タスクに関連づけられたコンフィグ情報に基づいて、対応するクローラモジュールを決定することができる。例えば、クローリングジョブを送信または生成するとき、ユーザは、クローリングモジュールに含まれる、１つまたは複数のＵＲＬｓの各々に関するクローラモジュールを選択することができる。特定のＵＲＬに対応する選択されたクローラモジュールは、特定のＵＲＬに関連づけられたタスクに関連するコンフィグ情報の一部として記憶することができる。サーバ１１０は、タスクを、対応するクローラモジュールにディスパッチすることができる。
【０１３７】
いくつかの実施形態において、クローラモジュールは、スパイダークローラモジュール（例えば、スパイダーィクローラモジュール４１０８２）、クロームクローラモジュール（例えば、クロームクローラモジュール４１０８４）等を含むことができる。スパイダークローラモジュールは、ＪａｖａＳｃｒｉｐｔレンダリング動作を行うことなく、ウェブページデータをフェッチするように構成された分散クローラであり得る。例えば、スパイダークローラモジュールは、ＨＴＭＬページ（複数の場合もある）をダウンロードするように構成することができる。クロームクローラモジュールは、ウェブページデータをフェッチする前に、レンダリングされたウェブページおよび／またはユーザ定義されたページにＪａｖａＳｃｒｉｐｔレンダリング動作を行うように構成することができる。スパイダークローラモジュールとクロームクローラモジュールは、異なるクローリング性能を有することができる。スパイダークローラモジュールとクロームクローラモジュールとの間の差分は、この開示のどこか（例えば、図４乃至５およびその説明）に見出すことができる。
【０１３８】
いくつかの実施形態において、クローラモジュールは、タスクに関連づけられたＵＲＬに従って、少なくとも１つのウェブページをフェッチすることができる。例えば、クローラモジュールは、ＵＲＬに対応するＤＮＳを解析することにより、ホストのＩＰアドレスを決定することができる。クローラモジュールは、ホストのＩＰアドレスに基づいてＵＲＬに対応する少なくとも１つのウェブページをダウンロードし、および／または記憶することができる。いくつかの実施形態において、ウェブページがダウンロードされた後、サーバ１１０は、ウェブページを、ストレージデバイス１４０または、クラウドコンピューティングシステム１００の内部または外部のファイルシステム（例えば、ＨＤＦＳ）に記憶することができる。
【０１３９】
いくつかの実施形態において、クローラモジュールは、プロキシモジュール（例えば、プロキシモジュール４１１６）の１つまたは複数のプロキシを用いて、タスクに関連づけられたＵＲＬに従う、少なくとも１つのウェブページをフェッチすることができる。各プロキシは、インターネットプロトコル（ＩＰ）アドレスを有することが出来る。いくつかの実施形態において、プロキシモジュールは、複数の無料および／または有料プロキシを収集することができる。プロキシモジュールは、収集したプロキシの安全性と利用可能性を検証することができる。プロキシモジュールは、プロキシモジュールのプロキシプール内の、相対的に高い安全性と利用可能性を有する１つまたは複数のプロシキを記憶することができる。クローラモジュールは、プロキシモジュールと通信することができ、プロキシモジュールのプロキシプール内の１つまたは複数のプロキシを使用して、タスクに関連づけられたＵＲＬに従う少なくとも１つのウェブページをフェッチすることができる。
【０１４０】
いくつかの実施形態において、サーバ１１０（例えば、クローリング圧力制御モジュール４１１８）は、クローラモジュールを制御して、同時フェッチ要求のプリセットされたカウントおよび／またはプリセットされたクローリング頻度に従って、少なくとも１つのウェブページをフェッチすることができる。ここで使用されるように、「同時フェッチ要求のカウント」は、一度に１つまたは複数のプロキシを用いてウェブページがフェッチされる回数、あるいは、一度に１つまたは複数のプロキシを用いてフェッチされるウェブページの数を指すことができる。「クローリング頻度」は、１つまたは複数のプロキシを用いて１秒あたりウェブページがフェッチされる回数、または１つまたは複数のプロキシを用いて１秒あたりフェッチされるウェブページの数を指すことができる。例えば、クローラモジュールが、プロキシを用いてウェブページをフェッチするのに２００ミリ秒かかり、プロキシは、一度にウェブページの１つのフェッチ要求を開始し、プロキシは、１秒間に５回そのウェブページをフェッチすることができる。この状況において、同時フェッチ要求のカウントは、１であり得、クローリング頻度は５であり得る。他の例として、クローラモジュールがプロキシを用いてウェブページをフェッチするのに２００ミリ秒かかり、プロキシが、一度にウェブページの５つのフェッチ要求を開始する場合、プロキシは、１秒間に５回ウェブページをフェッチすることができる。この状況において、同時フェッチ要求のカウントは、５であり、クローリング頻度は、５であり得る。
【０１４１】
いくつかの実施形態において、サーバ１１０は、プロキシモジュール内の（ＩＰアドレスを有する）有効プロキシのカウントに基づいて、同時フェッチ要求のカウントおよび／またはクローリング頻度を調整することができる。例えば、プロキシモジュール内の有効プロキシのカウントが比較的大きい場合、各プロキシの同時フェッチ要求のカウント、または各プロキシのクローリング頻度は、相対的に低く設定することができ、これは、クローリングプロセスがディスカバーされる可能性を低減し、および／またはターゲットウェブサイト（複数の場合もある）がフェッチされるのをブロックすることができ、それにより、クローリングプロセスの安全性を改善することができる。
【０１４２】
ステップ７７０において、サーバ１１０（例えば、解析モジュール４１１４）は、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページのエレメント情報を抽出することができる。いくつかの実施形態において、サーバ１１０は、タスクに関連づけられたコンフィグ情報に従って、少なくとも１つのウェブページを解析することにより少なくとも１つのウェブページのエレメント情報と、１つまたは複数のプリセットされた解析アルゴリズム（例えば、解析ツール）を抽出することができる。例示解析アルゴリズムは、ＨＴＭＬパーサー、ＳＧＭＬパーサー、Jsoup、BeautifulSoup、Readability等を含むことができる。解析アルゴリズムは、ＡＰＩ（例えば、ＡＰＩ４１０２、ＡＰＩアグリゲーションプラットフォーム５２０２）を介して手動で設定することができるか、あるいは、デフォルト設定による、クラウドコンピューティングシステム１００の１つまたは複数のコンポーネントにより決定することができる。いくつかの実施形態において、サーバ１１０は、フェッチされたウェブページデータの特徴値（複数の場合もある）に従うウェブページのエレメント情報を抽出することができる。特徴値（複数の場合もある）のさらなる記述は、この開示のどこか（例えば、図４とのその説明）に見出すことができる。
【０１４３】
ステップ７８０において、サーバ１１０（例えば、解析モジュール４１１４）は、エレメント情報を記憶することができる。いくつかの実施形態において、サーバ１１０は、エレメント情報をファイルシステム（例えば、ＨＤＦＳ）に記憶することができる。例えば、サーバ１１０は、エレメント情報を、ＨＤＦＳの１つまたは複数の分散ストレージノードに記憶することができる。いくつかの実施形態において、サーバ１１０は、エレメント情報を、１つまたは複数のプリセットされた解析アルゴリズムを用いて特定のフォーマットに変換することができる。例えば、サーバ１１０は、エレメント情報をテーブルフォーマットに変換することができる。いくつかの実施形態において、サーバ１１０は、エレメント情報を、指定されたフォーマットで、ＨＤＦＳの１つ又は複数の分散ストレージノードに記憶することができる。
【０１４４】
上述した記述は、単に例示目的で提供されたものであり、この開示の範囲を制限することを意図したものではないことに留意する必要がある。当業者は、この開示の教示に基づいて、複数の変更及び変形を行うことができる。しかしながら、これらの変更及び変形は、この開示の範囲から逸脱しない。いくつかの実施形態において、１つまたは複数の動作は、プロセス７００内のどこかに追加することができる。例えば、リンクディスカバー動作（例えば、図８の動作８１０および／または８２０）をプロセス７００に追加することができる。他の例として、１つまたは複数のストレージ動作（例えば、ウェブページの記憶、コンフィグファイル等）をプロセス７００に追加することができる。
【０１４５】
図８は、この開示のいくつかの実施形態に従うリンク（複数の場合もある）をディスカバーするための例示プロセスを図示するフローチャートである。プロセス８００は、クラウドコンピューティングシステム１００、クラウドコンピューティングシステム４１００、あるいはクラウドコンピューティングシステム５２００により実行することができる。例えば、プロセス８００は、ストレージＲＯＭ２３０またはＲＡＭ２４０に記憶された命令のセットとしてインプリメントすることができる。図４乃至５のプロセッサ２２０および／またはモジュールは、命令のセットを実行することができ、命令を実行すると、プロセッサ２２０および／またはモジュールは、プロセス８００を実行するように構成されることができる。以下に示す図示プロセスの動作は、例示目的であることを意図している。いくつかの実施形態において、プロセス８００は、記載されていない１つまたは複数の追加の動作および／または上述した１つまたは複数の動作なしに、達成することができる。さらに、図８に示され、以下に記載されるプロセス８００の動作は、限定することを意図したものではない。
【０１４６】
ステップ８１０において、サーバ１１０（例えば、リンクディスカバーモジュール４１１０）は、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページから、１つまたは複数のリンクしたＵＲＬｓを抽出することができる。いくつかの実施形態において、サーバ１１０は、１つまたは複数のリンクしたＵＲＬｓ（リンクとも呼ばれる）を少なくとも１つのウェブページ（例えば、ステップ７６０でフェッチされたウェブページ）から抽出することができる。
【０１４７】
いくつかの実施形態において、サーバ１１０は、オンラインでリンクしたＵＲＬ（複数の場合もある）抽出することができる（「新しいリンク（複数の場合もある）をディスカバーする」とも呼ぶ）。単なる例示として、サーバ１１０（例えば、クローラモジュール４１０８）は、少なくとも１つのウェブページをメッセージキューに入れることができる。ここで使用されるように、メッセージキューは、プロセス間通信（ＩＰＣ）、あるいは、同じプロセス内のスレッド間通信に使用するソフトウェアエンジニアリングコンポーネントを指すことができる。いくつかの実施形態において、メッセージキューは、Kafka、Redis等を含むことができる。サーバ１１０（例えば、第１のリンク生成ロジックモジュール４１１０２）は、メッセージキューから少なくとも１つのウェブページをポップすることができる。サーバ１１０（例えば、第１のリンク生成ロジックモジュール４１１０２）は、少なくとも１つのウェブページに関連づけられたタスクに関連するコンフィグ情報に従って、少なくとも１つのウェブページを解析することにより、少なくとも１つのウェブページから、１つ又は複数のリンクしたＵＲＬｓを抽出することができる。例えば、サーバ１１０（第１のリンク生成ロジックモジュール４１１０２）は、少なくとも１つのウェブページを解析することにより、リンククロール深度を決定することができる。いくつかの実施形態において、リンククロール深度は、幅優先サーチアルゴリズム、深度優先サーチアルゴリズム等に基づいて決定することができる。ここで使用するように、深度優先サーチ（ＤＦＳ）は、ルートノードで開始するアルゴリズムを参照し、（例えば、ウェブページ内の任意の最初にリンクしたＵＲＬをルートノードとして選択する）、バックトラックする前に、各ブランチノード（例えば、第１のリンクしたＵＲＬに含まれる第２のリンクしたＵＲＬ）に沿って出来る限り探索する。幅優先サーチ（ＢＦＳ）は、ルートノードで開始するアルゴリズムを参照し、（例えば、ウェブページ内の任意のリンクしたＵＲＬを選択する）次の深度レベルのノードに移動する前に、現在の深度における隣接ノード（例えば、ウェブページ内の他のリンクしたＵＲＬｓ）のすべてを探索することができる。いくつかの実施形態において、リンククロール深度は、ユーザにより手動で設定することができるか、あるいは、デフォルト設定に従う、クラウドコンピューティングシステム１００の１つまたは複数のコンポーネントにより決定することができる。例えば、ユーザは、クローリングジョブに、リンククロール深度を設定し、リンククロール深度を対応するコンフィグファイルに記憶することができ、従って、サーバ１１０（例えば、第１のリンク生成モジュール４１１０２）は、タスクに関連づけられたコンフィグ情報に従って、および／またはリンククロール深度に基づいて、１つまたは複数のリンクしたＵＲＬｓを抽出することができる。
【０１４８】
いくつかの実施形態において、サーバ１１０は、リンクしたＵＲＬ（複数の場合もある）をオフラインで抽出することができる。単なる例示として、サーバ１１０（例えば、クローラモジュール４１０８）は、ｗｅｂページがフェッチされた後、少なくとも１つのウェブページをファイルシステム（例えば、ＨＤＦＳ）に記憶することができる。幾つかの実施形態において、サーバ１１０（例えば、クローラモジュール４１０８）は、少なくとも１つのウェブページのエレメント情報に対応する、１つまたは複数の特徴値を決定することができる。いくつかの実施形態において、サーバ１１０（例えば、クローラモジュール４１０８）は、エレメント情報に対応する、１つまたは複数の特徴値を、分散ファイルシステムの１つまたは複数の分散ストレージノードに記憶することができる。サーバ１１０（例えば、第２のリンク生成ロジックモジュール４１１０４）は、１つまたは複数のウェブページをオフラインのファイルシステムから周期的に取得することができる。サーバ１１０（例えば、第２のリンク生成ロジックモジュール４１１０４）は、１つまたは複数のリンクしたＵＲＬｓを少なくとも１つのウェブページから抽出することができる。いくつかの実施形態において、サーバ１１０（例えば、第２のリンク生成ロジックモジュール４１１０４）はエレメント情報に対応する１つまたは複数の特徴値に基づいてリンククロール深度を決定することができる。いくつかの実施形態において、サーバ１１０（例えば、第２のリンク生成モジュール４１１０４）は、リンククロール深度に基づいて、および／またはタスクに関連づけられたコンフィグ情報に従って、少なくとも１つのウェブページから１つまたは複数のリンクしたＵＲＬｓを抽出することができる。例えば、ユーザは、リンククロール深度をクローリングジョブに設定することができ、リンククロール深度は、対応するコンフィグファイルに記憶することができ、従って、サーバ１１０（例えば、第１のリンク生成ロジックモジュール４１１０２）は、リンククロール深度および／またはタスクに関連づけられたコンフィグ情報に従って１つ又は複数のリンクしたＵＲＬｓを抽出することができる。
【０１４９】
ステップ８２０において、サーバ１１０（例えば、リンクディスカバーモジュール４１１０）は、１つ又は複数の抽出されたリンクしたＵＲＬｓをシードデータベース（例えば、シードデータベース４１０４）に記憶することができる。サーバ１１０は、１つまたは複数の抽出されたリンクしたＵＲＬｓを同期して、または非同期でシードデータベースに記憶することができる。例えば、サーバ１１０は、１つまたは複数の抽出されたリンクしたＵＲＬｓをメッセージキューにプッシュすることができる。サーバ１１０は、メッセージキューから１つまたは複数のリンクしたＵＲＬｓをポップすることができる。サーバ１１０は、１つまたは複数のポップしたリンクしたＵＲＬｓをシードデータベース（例えば、シードデータベース４１０４）に記憶することができる。
【０１５０】
上述した記述は、単に例示目的のためであり、この開示の範囲を限定することを意図したものではないことに留意する必要がある。当業者は、複数の変更および変形を、この開示の教示に基づいて行うことができる。しかしながら、これらの変更および変形は、この開示の範囲から逸脱しない。
【０１５１】
以上基本概念について述べたが、当業者には、この詳細な開示を読んだ後、上述した詳細な開示は、例示に過ぎず、限定を意図したものではないことは、明白である。ここに明白に述べていないが、種々の変更、改良、および修正を行うことができ、当業者を対象としている。これらの変更、改良、および修正は、この開示により示唆されることが意図され、この開示の例示実施形態の精神と範囲内である。
【０１５２】
さらに、この開示の実施形態を記載するためにある用語を用いた。例えば、「一実施形態（one embodiment）」、「一実施形態（an embodiment）」および／または「いくつかの実施形態」という用語は、実施形態に関連して記載した特定の特徴、構造または特性がこの開示の少なくとも１つの実施形態に含まれることを意味する。それゆえ、この明細書の種々の部分における「一実施形態（one embodiment）」、「一実施形態（an embodiment）」、または「代替実施形態」は、必ずしも同じ実施形態を指すとは限らないことが強調されるとともに、理解されねばならない。さらに、特定の特徴、構造、または特性は、適切であるように、１つまたは複数の実施形態に組み合わせることができる。
【０１５３】
さらに、この開示の態様は、任意の新規で有用なプロセス、マシン、製造、または物質の組成、またはそれらの新規で有用な改良を含む、多数の特許性のある分類またはコンテキストのいずれかで、ここに図示および記載することができることが、当業者には理解できるであろう。従って、この開示は、完全ハードウェア、完全ソフトウェア（ファームウェア、レジデントソフトウェア、マイクロコード等を含む）、または、すべてを、ここでは、一般的に「ユニット」、「モジュール」、または「システム」と呼ぶことができるソフトウェアおよびハードウェアインプリメンテーションの結合でインプリメントすることができる。さらに、この開示の態様は、コンピュータ可読プログラムコードが具現化された、１つまたは複数のコンピュータ可読媒体に具現化されたコンピュータプログラムプロダクトの形態をとることができる。
【０１５４】
コンピュータ可読信号媒体は、例えば、ベースバンドまたは搬送波の一部として具現化されたコンピュータ可読プログラムコードを有した搬送データ信号を含むことができる。そのような伝搬信号は、電磁気、光学等の、またはそれらの任意の組み合わせを含む種々の形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、かつ命令実行システム、装置またはデバイスに使用する、または関連して使用するプログラムを通信し、伝搬し、または転送することができる任意のコンピュータ可読媒体であり得る。コンピュータ可読信号媒体に具現化されたプログラムコードは、無線、有線、光ファイバケーブル、ＲＦ等またはそれらの任意の組み合わせを含む、任意の適切な媒体を用いて送信することができる。
【０１５５】
この開示の態様に関する動作を実行するためのコンピュータプログラムコードは、Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB、NET、Python等のようなオブジェクト指向プログラミング言語、「Ｃ」プログラミング言語、Visual Basic、Fortran 2103、Perl、COBOL 2102、PHP、ABAP、のような汎用手続プログラミング言語、Python、Ruby、およびGroovyのような動的プログラミング言語、または他のプログラミング言語を含む、１つまたは複数のプログラミング言語の組み合わせで書くことができる。プログラムコードは、スタンドアロンソフトウェアパッケージとして、全体をユーザのコンピュータで実行してもよいし、一部をユーザのコンピュータで実行してもよいし、一部をユーザのコンピュータで、一部をリモートコンピュータで、または全体をリモートコンピュータまたはサーバ上で実行してもよい。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、あるいは、接続は、外部コンピュータ（例えば、インターネットサービスプロバイダを使用してインターネットを介して）に行うことができ、あるいは、クラウドコンピューティング環境で行われてもよいし、あるいは、サービスとしてのソフトウェア（ＳａａＳ）のようなサービスとして提供されてもよい。
【０１５６】
さらに、エレメントまたはシーケンスを処理する記載された順番、数字、文字または他の指定の使用は、それゆえ、請求項で指定された場合を除き、請求した処理および方法をいずれかの順番に限定することを意図しない。上述した開示は、この開示の種々の有用な実施形態であると現在考えられている、様々な例を介して論じているけれども、そのような詳細はその目的のためだけであり、添付した請求項は、開示した実施形態に限定されず、開示された実施形態の精神と範囲内にある変形例および均等な構成をカバーすることを意図している。たとえば、上述した種々のコンポーネントのインプリメンテーションは、ハードウェアデバイスで具現化することができるけれども、ソフトウェアのみのソリューション、例えば、既存のサーバまたはモバイルデバイスへのインストールとしてインプリメントすることができる。
【０１５７】
同様に、この開示の実施形態の上述した記述において、種々の特徴は、１つまたは複数の種々の本発明の実施形態を理解するのを助けるために、開示を合理化する目的で単一の実施形態、図、または記述にグループ化されていることが理解されねばならない。しかしながら、この開示の方法は、請求された主題が各請求項に明示的に記載されたものより多くの特徴を必要とするという意図を反映するものとして、解釈されるべきではない。むしろ、この発明の実施形態は、上述した単一の開示した実施形態のすべての特徴よりも少ない特徴にある。
【０１５８】
いくつかの実施形態において、この出願のある実施形態を記載および請求するために使用される量または特性を表す数は、いくつかの例では、「約」、「概算」、または「実質的に」という用語により変更されると理解されるべきである。例えば、「約」、「概算」、「実質的に」は、そうでないと記載しない限り、記載される値の±２０％を示すことができる。従って、いくつかの実施形態において、書面による説明、および添付した特許請求の範囲は、特定の実施形態により得られることが求められる所望の特性に応じて変化し得る近似値である。いくつかの実施形態において、数値パラメータは、報告された有効桁数に照らして、通常の丸め技法を適用して理解されるべきである。アプリケーションのいくつかの実施形態の広い範囲を述べた数値範囲およびパラメータは、特定の例で述べた数値は、実用可能に正確に報告される。
【０１５９】
本明細書で参照される、特許、特許出願、特許出願の刊行物、および、記事、本、明細書、公報、文書、物および／または類似のもののような他の資料のそれぞれは、この参照によりその全体が本明細書に組み込まれ、但し、これに関連する任意の手続ファイル履歴、この開示と矛盾するあるいは衝突するもの、あるいは、この文献に現在または後に関連付けられた特許請求の範囲の最も広い範囲に限定的影響を与える可能性があるものを除く、例として、組み込まれた資料のいずれかに関連づけられた記述、定義および／または用語の使用と、本願に関連付けられたものとの間に何らかの不一致または衝突がある場合、本願における記述、定義および／または用語の使用が優先する。
【０１６０】
最後に、本明細書に開示される出願の実施形態は、本出願の実施形態の原理の例示であることが理解されるべきである。採用される可能性のある他の変更は、本出願の範囲内にあり得る。したがって、限定ではないが例として、本出願の実施形態の代替構成を、本明細書の教示に従って利用することができる。したがって、本出願の実施形態は、示され、記載されたものに正確に限定されない。
【図１】
2021515950.tif 000003
【図２】
2021515950.tif 000004
【図３】
2021515950.tif 000005
【図４】
2021515950.tif 000006
【図５】
2021515950.tif 000007
【図６】
2021515950.tif 000008
【図７】
2021515950.tif 000009
【図８】
2021515950.tif 000010
【手続補正書】
【提出日】令和2年10月6日(2020.10.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザにより提出されたクローリングジョブを取得するためにユーザインタフェースを提供するように構成されたアプリゲーションプログラムインタフェース（ＡＰＩ）と、
ＡＰＩと通信し、前記クローリングジョブに関連づけられた１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を記憶するように構成されたシードデータベースと、
前記シードデータベースと通信し、前記１つまたは複数のＵＲＬｓを取得し、前記１つまたは複数のＵＲＬｓの各々を対応するクローラモジュールにディスパッチするように構成されたジョブジェネレータであって、前記ジョブジェネレータと通信する前記クローラモジュールは、前記１つまたは複数のＵＲＬｓに基づいてウェブサイトデータまたはウェブページデータの少なくとも１つをフェッチするように構成された、ジョブジェネレータと、
を備えた、クラウドコンピューティングのためのシステム。
【請求項２】
前記クローラモジュールは、スパイダークローラモジュールまたはクロームクローラモジュールの少なくとも１つを備え、前記クローラモジュールは、ウェブページデータをフェッチする前にレンダリングされたウェブページデータまたはユーザ定義されたページの少なくとも１つにJavaScriptレンダリングオペレーションを実行するように構成された、請求項１に記載のシステム。
【請求項３】
前記クローラモジュールおよび前記シードデータベースと通信し、
前記クローラモジュールによりフェッチされた前記ウェブサイトデータまたは前記ウェブページデータの少なくとも１つを解析することにより前記クローリングジョブのリンククロール深度を決定し、
前記リンククロール深度に基づいて前記クローリングジョブを更新し、
前記更新されたクローリングジョブを前記シードデータベースにフィードバックする、
ように構成されたリンクディスカバーモジュールをさらに備えた、請求項１および２のいずれかに記載のシステム。
【請求項４】
前記リンクディスカバーモジュールは、
前記クローラモジュールによりフェッチされた前記ウェブサイトデータの第１のコピーファイルまたは前記ウェブページデータの第２のコピーファイルの少なくとも１つを、リアルタイムで解析することにより前記クローリングジョブの前記リンククロール深度を決定し、
前記リンククロール深度に基づいて前記クローリングジョブを更新し、
前記更新されたクローリングジョブをリアルタイムで前記シードデータベースにフィードバックする、
ように構成された第１のリンク生成ロジックモジュールを備えた、請求項３に記載のシステム。
【請求項５】
前記１つまたは複数のクローラモジュールと通信し、プリセットされたリストに従って、前記フェッチしたウェブサイトデータまたはフェッチしたウェブページデータの少なくとも１つに関連づけられたエレメント情報を分散的に記憶するように構成された１つ又は複数の分散ストレージノードをさらに備えた、請求項４に記載のシステム。
【請求項６】
前記リンクディスカバーモジュールは、
前記１つ又は複数の分散ストレージノードと通信し、
所定のスケジュールに従うオフラインで、前記１つまたは複数の分散ストレージノードに記憶された前記エレメント情報に対応する１つまたは複数の特徴値を決定し、
前記エレメント情報に対応する前記１つまたは複数の特徴値に基づいて前記リンククロール深度を決定し、
前記リンククロール深度に基づいて前記クローリングジョブを更新し、
前記更新されたクローリングジョブを前記シードデータベースにフィードバックする、
ように構成された第２のリンク生成ロジックモジュールをさらに備えた、請求項５に記載のシステム。
【請求項７】
前記１つまたは複数の特徴値は、フレームパラメータ、識別パラメータ、ラベルパラメータ、タイプパラメータ、テキストパラメータ、またはインデックスパラメータの少なくとも１つを備える、請求項６に記載のシステム。
【請求項８】
前記１つまたは複数の分散ストレージノードと通信し、
前記エレメント情報を１つまたは複数のプリセットされた解析アルゴリズムを用いて指定されたフォーマットに変換し、
前記エレメント情報を前記指定されたフォーマットで前記１つまたは複数の分散ストレージノードに記憶するように構成された解析モジュールをさらに備えた、請求項７に記載のシステム。
【請求項９】
前記解析モジュールは前記ＡＰＩと通信し、前記ＡＰＩはさらに、前記ユーザにより提出された、１つまたは複数の解析アルゴリズムを取得するように構成され、前記１つまたは複数の提出された解析アルゴリズムは、前記解析モジュールに記憶された、前記１つまたは複数のプリセットされた解析アルゴリズムとして指定される、請求項８に記載のシステム。
【請求項１０】
前記クローラモジュールと通信し、
ハイパーテキストトランフファープロトコル（ＨＴＴＰｓ）で１つまたは複数のプロキシを収集して検証し、
前記クローラモジュールと協働して、前記１つまたは複数のＵＲＬｓに基づいてウェブサイトデータおよび／またはウェブページデータをフェッチする、ように構成されたプロキシモジュールをさらに備えた、請求項２乃至９のいずれか一項に記載のシステム。
【請求項１１】
前記プロキシモジュールはさらに、クロームクローラモジュールのためのクローリング圧力制御を提供するように構成された、請求項１０に記載のシステム。
【請求項１２】
クローリングのために前記クロームクローラモジュールがサポートする１つまたは複数のＵＲＬｓの少なくとも１つは、ユーザ定義されたロジックアルゴリズムを備える、請求項１１に記載のシステム。
【請求項１３】
前記クローラモジュールと通信し、同時フェッチ要求のプリセットされたカウントまたはプリセットされたクローリング頻度の少なくとも１つに従って、前記クローラモジュールを制御してウェブサイトデータまたはウェブページデータの少なくとも１つをフェッチするように構成されたクローリング圧力制御モジュールをさらに備えた、請求項１乃至１２のいずれか一項に記載のシステム。
【請求項１４】
前記クラウドコンピューティングのためのシステムは、サービスとしてのプラットフォーム（ＰＡＡＳ）に基づいて運用および保守プラットフォーム上で実行され、前記運用および保守プラットフォームは、前記クローリングジョブをインプリメントするためのコンテナを開始し、前記コンテナを動的に管理するように構成された、請求項１乃至１２のいずれか一項に記載のシステム。
【請求項１５】
クラウドコンピューティングのためのシステムにおいて、
命令のセットを含む少なくとも１つのストレージ媒体と、
前記少なくとも１つのストレージ媒体と通信する少なくとも１つのプロセッサであって、前記命令のセットを実行すると、前記少なくとも１つのプロセッサは、前記システムに、
１つまたは複数のユニフォームリソースロケータ（ＵＲＬｓ）を備えた要求を受信することに応答して、前記１つまたは複数のＵＲＬｓをシードデータベースに記憶させ、
実行されるために待機している第１のカウントのタスクに基づいて前記シードデータベースから少なくとも１つのＵＲＬを選択させ、
前記少なくとも１つの選択されたＵＲＬの各々に基づいてタスクを生成させ、
前記タスクを対応するクローラモジュールにディスパッチし、前記タスクに関連づけられたＵＲＬに従って、前記クローラモジュールに少なくとも１つのウェブページをフェッチさせ、
前記少なくとも１つのウェブページを解析することにより前記少なくとも１つのウェブページのエレメント情報を抽出させ、
前記エレメント情報をファイルシステムに記憶させる、
ように構成された少なくとも１つのプロセッサと、
を備えた、クラウドコンピューティングのためのシステム。
【国際調査報告】
2021515950.tif 000011
2021515950.tif 000012