2012-08-05 30 views
0

背景資料:如何解決網頁的網址cannonical鏈接

我試圖建立在Groovy一個很簡單的網絡爬蟲。只要有一個URL地址,就可以下載關聯的網頁和從該網頁鏈接的所有頁面。

在HTML代碼中的鏈接中,URL地址有時會縮寫。三種不同類型的URL浮現在腦海中:

  • 絕對URL地址(如http://www.food.com/fruit/orange.html
  • 絕對URL地址與Web根目錄(如/fruit/orange.html)
  • 相對URL地址,與所在的目錄當前網頁所在(比如../vegetables/carrot.html)

不過,我知道的一個事實,即Web應用程序可以實現任意URL路由和網址因此地址可能不會反映filesys的結構總之。

我的問題:

如何在Web瀏覽器知道要問,當用戶點擊網頁中的鏈接使用哪個網址?或者,如果我的抓取工具在網頁中找到鏈接時知道要下載哪個網頁?

有關可用Groovy庫解析URL的任何提示也值得讚賞。

回答

1

標準庫中提供的java.net.URI類提供了通過URI#resolve(String)方法解析相對引用的方法。

請參閱javadoc documentation

2

瀏覽器根據URL規範解析相對URL(包括相對於服務器根的URL,例如/fruit/orange.html),請參閱互聯網標準STD 66,該規範目前是RFC 3986.除了一般注意事項外,他們還需要如果存在,請考慮<base href=...>標籤。

這與文件系統無關。如果URL恰好映射到服務器中的文件,那是服務器的內部。

規範URLs是不同的。使用link元素與rel=canonical,頁面可以指定它的規範URL,例如,它應該用於搜索引擎。見例如http://googlewebmastercentral.blogspot.fi/2009/02/specify-your-canonical.html

+0

感謝您的回答。這是否意味着要實現我的爬蟲,我需要研究適當的RFC並相應地實現算法?你知道我可以使用的任何現有庫(在我的Groovy項目中)爲我處理這個問題嗎? – 2012-08-05 12:31:47