背景情報:
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 ライブラリに関するヒントもいただければ幸いです。