# 處理URLs
<h2>問題</h2>
<p>你有一個包含相對URLs路徑的HTML文檔,需要將這些相對路徑轉換成絕對路徑的URLs。</p>
<h2>方法</h2>
<ol>
<li>在你解析文檔時確保有指定<code>base URI</code>,然后</li>
<li>使用 <code>abs:</code> 屬性前綴來取得包含<code>base URI</code>的絕對路徑。代碼如下: </li>
</ol>
<pre><code>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/"
</code></pre>
<h2>說明</h2>
<p>在HTML元素中,URLs經常寫成相對于文檔位置的相對路徑:
<code><a href="/download">...</a></code>. 當你使用
<code><a title="Get an attribute's value by its key." href="http://jsoup.org/apidocs/org/jsoup/nodes/Node.html#attr%28java.lang.String%29">Node.attr(String
key)</a></code> 方法來取得a元素的href屬性時,它將直接返回在HTML源碼中指定定的值。</p>
<p>假如你需要取得一個絕對路徑,需要在屬性名前加
<code>abs:</code> 前綴。這樣就可以返回包含根路徑的URL地址<code>attr("abs:href")</code></p>
<p>因此,在解析HTML文檔時,定義base URI非常重要。</p>
<p>如果你不想使用<code>abs:</code> 前綴,還有一個方法能夠實現同樣的功能
<code><a title="Get an absolute URL from a URL attribute that may be relative (i.e." href="http://jsoup.org/apidocs/org/jsoup/nodes/Node.html#absUrl%28java.lang.String%29">Node.absUrl(String
key)</a></code>。</p></div>
- Introduction
- 爬蟲相關技能介紹
- 爬蟲簡單介紹
- 爬蟲涉及到的知識點
- 爬蟲用途
- 爬蟲流程介紹
- 需求描述
- Http請求處理
- http基礎知識介紹
- http狀態碼
- httpheader
- java原生態處理http
- URL類
- 獲取URL請求狀態
- 模擬Http請求
- apache httpclient
- Httpclient1
- httpclient2
- httpclient3
- httpclient4
- httpclient5
- httpclient6
- okhttp
- OKhttp使用教程
- 技術使用
- java執行javascript
- 網頁解析
- Xpath介紹
- HtmlCleaner
- HtmlCleaner介紹
- HtmlCleaner使用
- HtmlParser
- HtmlParser介紹
- Jsoup
- 解析和遍歷一個HTML文檔
- 解析一個HTML字符串
- 解析一個body片斷
- 從一個URL加載一個Document
- 從一個文件加載一個文檔
- 使用DOM方法來遍歷一個文檔
- 使用選擇器語法來查找元素
- 從元素抽取屬性,文本和HTML
- 處理URLs
- 示例程序 獲取所有鏈接
- 設置屬性的值
- 設置一個元素的HTML內容
- 消除不受信任的HTML (來防止XSS攻擊)
- 正則表達式
- elasticsearch筆記
- 下載安裝elasticsearch
- 檢查es服務健康