處理URLs
問題
你有一個包含相對URLs路徑的HTML文檔,需要將這些相對路徑轉換成絕對路徑的URLs。
方法
- 在你解析文檔時確保有指定
base URI
,然後 - 使用
abs:
屬性前綴來取得包含base URI
的絕對路徑。代碼如下:
Document doc = Jsoup.connect("http://www.open-open.com").get(); Element link = doc.select("a").first(); String relHref = link.attr("href"); // == "/" String absHref = link.attr("abs:href"); // "http://www.open-open.com/"
說明
在HTML元素中,URLs經常寫成相對於文檔位置的相對路徑: <a href="/download">...</a>
. 當你使用 Node.attr(String key)
方法來取得a元素的href屬性時,它將直接返回在HTML源碼中指定定的值。
假如你需要取得一個絕對路徑,需要在屬性名前加 abs:
前綴。這樣就可以返回包含根路徑的URL地址attr("abs:href")
因此,在解析HTML文檔時,定義base URI非常重要。
如果你不想使用abs:
前綴,還有一個方法能夠實現同樣的功能 Node.absUrl(String key)
。