2011-12-06 32 views
0

こんにちは私は少しクモを作ろうとしています。 私はそれを構築していたのですが、リンクがルートドメインリンクかサブドメインリンクかを確認する必要があるという問題が発生しました。例えばCurlドメインがルートかどうか確認してください。

http://www.domain.com or 
http://domain.com 
http://domain.com/index.php 
http://domain.com/default.php 
http://domain.com/index.html 
http://domain.com/default.html 

。 。 など はすべて同じです。

実際には、文字列urlを入力として受け取り、それがサイトのどのような名前であれルートやホームページであるかどうかを確認する関数が必要です。

+0

技術的には、www.domain.comとdomain.comは同じではありません。wwwは、hello.domain.comがサブドメインのように、ほとんどの人が常にdomain.comを指し示すサブドメインです。 – Jakub

+1

すべてのサイトがこの規約を使用すると仮定しないでください。これらのURLのそれぞれに異なるサイトを持つことは完全に可能です。私があなただったら、コンテンツをハッシュして、それを使って既にロードしたものと比較します。 – Brad

+0

内容を比較すべきでしょうか? www.domain.comはdomain.comのサブドメインではありませんか? –

答えて

0

コメントに記載されているとおり、これは本当にスパイダーをコーディングする基本的な側面です。汎用スパイダーをコード化する場合は、URLを解決し、同じコンテンツをどのように指しているかを検出する手段(リダイレクトまたは重複したコンテンツを通じて)を検出する手段を追加する必要があります。彼らが指し示す内容。

あなたは、少なくとも対処する必要があります。

  • 相対パス
  • 一つの方法または別のWebページへの重要ですが、内容の違いをレンダリングしないGET-変数。
  • 不正なURL。
  • href属性のJavaScript関連情報。
  • HTML以外の素材へのリンク - PDF、画像などへの直接ダウンロードリンク(拡張子が常にあるとは限りません。画像を提供するPHPスクリプトの場合はどうなりますか)。

これはいくつかの側面ですが、すべての種類の一般的な方法で使用する予定の場合、検出の種類はスパイダーの基本的な部分でなければなりません。

+0

zrvanありがとう、Ιあなたが正しいと思います。実際に私はΙが将来の使用に役立つコードを書いているので、私は一般的にコーディングしています:)。 私は、ページの内容を考慮に入れると、ページの一意性の問題を解決すると思います。 2つのURLの内容が同じであるため、2つの「ページ」はドメイン内のurlpathが異なっているにもかかわらず、同じか同じです。 今私は問題に遭遇しました。私は大きな文字列を2つ比較して速くする必要がありました。 – themis

+1

@themhz:これを行うには、一般にハッピーを使用します。スパイダーのニーズに応じて、衝突リスクのある高速アルゴリズム(たとえばmd5)または低リスクから低いリスクのいずれかを選択する必要があります(例えば、sha-family内の何か)の衝突については、http://se.php.net/manual/en/function.hash.phpにある「Gmailのドットコムでのluka8088」でタイミングテーブルを確認してください。しかし、これは本当に新しいSOの質問のトピックです。 – zrvan

関連する問題