0

背景情報:

Groovy で非常に単純な Web クローラーを構築しようとしています。単一の URL アドレスを指定すると、関連する Web ページとそのページからリンクされているすべてのページがダウンロードされます。

HTML コード内のリンクでは、URL アドレスが省略されている場合があります。次の 3 種類の URL が思い浮かびます。

  • 絶対 URL アドレス ( http://www.food.com/fruit/orange.htmlなど)
  • Web ルートに関連する絶対 URL アドレス (/fruit/orange.html など)
  • 現在の Web ページが存在するディレクトリに関連する相対 URL アドレス (../vegetables/carrot.html など)

ただし、Web アプリケーションは任意の URL ルーティングを実装できるため、URL アドレスがファイルシステムの構造をまったく反映していない可能性があるという事実を認識しています。

私の質問:

Web ブラウザーは、ユーザーが Web ページのリンクをクリックしたときに、要求する URL をどのように認識しますか? または、クローラーが Web ページ内のリンクを見つけたときに、どの Web ページをダウンロードするかをどのように判断するのでしょうか?

URL を解決するために利用可能な Groovy ライブラリに関するヒントもいただければ幸いです。

4

2 に答える 2

2

ブラウザは、URL仕様に従って相対URL(/fruit/orange.htmlなどのサーバールートに関連するURLを含む)を解決します。現在RFC3986であるインターネット標準STD66を参照してください一般的な考慮事項に加えて、ブラウザは次のことを考慮する必要があります。アカウント<base href=...>タグ(存在する場合)。

これはファイルシステムとは何の関係もありません。URLがサーバー内のファイルにマップされた場合、それはサーバーの内部にあります。

正規URLは何か違うものです。linkを含む要素を使用するとrel=canonical、ページで正規URLを指定できます。これは、たとえば検索エンジンで使用する必要があります。たとえば、http: //googlewebmastercentral.blogspot.fi/2009/02/specify-your-canonical.htmlを参照してください。

于 2012-08-05T09:46:40.360 に答える
1

標準ライブラリで利用可能な java.net.URI クラスは、URI#resolve(String) メソッドを介して相対参照を解決する手段を提供します。

javadoc ドキュメントを参照してください。

于 2012-08-15T13:53:51.443 に答える