
|
|
- Strategy 3 -<1 | 2 | 3><階層化の意味> Website Explorer は、ユーザが指定したスタートアドレスを起点として、 その中から有効なリンクを検出し、更にその中にある内部リンクの中から HTML ファイルを見つけ出して、 それらの中からも有効なリンクを探し出すというプロセスをたどります。 従ってその道は単純ではありません。文字通り、未知の地を踏査するエクスプローラであり、 パスファインダです。1つのウェブサイトを踏破するにもスタートアドレスをどこに求めるかにより、 何十通り、何百通りの道順が考えられます。 これは検出されるリンクがランダムであることを意味します。
例えば以下の6つのリンクが検出されたとしましょう。 ランダムなデータを整理するには、名前順にソートするのが一般的です。
上記リンクを名前順に並べ替えると、こうなります。 これで、データが理解しやすくなったでしょうか? かえって紛らわしくなりましたね。 下位階層のファイルが上位階層のファイルよりも先に来たり、そうかと思えばその後に下位階層のファイルが続いたりしています。 わけがわかりません。 これは、URL における /(スラッシュ)がファイルパスの階層構造を示すデリミタであることを無視して、
単純に URL 全体を名前順でソートした結果起こるのです。
今度は、階層構造を顧慮したソートの方法を示します。 これならばファイル名が階層別に区別されてからソートされているので、 いくぶんか見やすくなったと思います。このように URL を羅列する代わりに、エクスプローラのように、 URL の階層分化をツリー表示すれば、更にわかりやすくなるでしょう。
Website Explorer は、 検出された内部リンクのデータをもとにウェブサイトのディレクトリ構造をツリー表示します。 (エクスプローラと同じく、左側のペインにディレクトリ・ツリーが、 右側のペインに選択されたディレクトリのファイル一覧が表示されます。) これにより、ディレクトリの構造と共にファイルの位置関係が把握しやすくなっています。 ここで次の点を押さえておかなければなりません。 エクスプローラのようにローカルドライブ上のディレクトリ構造をツリー表示するプログラムはよく見かけますが、 その場合は通常、OS が提供するファイル検索 API(Application Program Interface)が利用されています。 例えば FindFirstFile という Win32 API は引数で指定したパスにあるファイルを検索する関数ですが、 ファイル名にワイルドカードを使えば検索条件にマッチする最初のファイルまたはディレクトリを見つけ出します。 続いて FindNextFile 関数によって検索条件にマッチする次のファイルを見つけだすことが出来ます。 このプロセスを繰り返せば、特定のディレクトリにあるファイルと(もしあれば)下位ディレクトリをすべて取得できますし、 下位ディレクトリにも同様の手順を順次繰り返せば或るドライブまたはディレクトリ内のすべてのファイルと下位ディレクトリを効率よく取得できます。 従って、ファイル検索関数でディレクトリのみを検索条件に指定すれば、 ディレクトリ・ツリーのようなものを簡単に作ることができるわけです。 同じ関数を使って選択されたディレクトリのファイルと下位ディレクトリを表示することも、わけなく出来ます。 しかしネットワーク上にある任意のウェブサイトのディレクトリ構造を、 HTML ファイルだけを手掛かりに再構築する場合には、このような王道は存在しません。 与えられた URL を自ら解析してディレクトリを展開しなければならない上、 新しい URL がランダムに与えられるために、同一ディレクトリを次々に更新しなければなりません。 Website Explorer が探査作業を開始すると、 ディレクトリ・ツリーがランダムに更新されていきますが、バックグラウンドでは以上のようなことが行われているのです。 <1 | 2 | 3> |