[英]Jsoup.parse() vs. Jsoup.parse() - or How does URL detection work in Jsoup?
Jsoup有2個html parse()方法:
我很難理解兩者之間差異的含義 :
parse()
版本中,“解析絕對URL的相對URL,在HTML聲明<base href>
標記之前發生的”是什么意思? 如果<base href>
標簽永遠不會出現在頁面中怎么辦? baseUri
是HTML頁面的完整URL(如原始文檔中所述)還是HTML頁面的基本 URL? 它用於Element#absUrl()
以便您可以檢索<a href>
, <img src>
, <link href>
, <script src>
等的(預期)絕對URL。例如
for (Element link : document.select("a")) {
System.out.println(link.absUrl("href"));
}
如果您還想下載和/或解析鏈接的資源,這非常有用。
在第二個parse()版本中,“解析絕對URL的相對URL,在HTML聲明
<base href>
標記之前發生的”是什么意思? 如果<base href>
標簽永遠不會出現在頁面中怎么辦?
某些(差)網站可能已在<base>
標記之前聲明了<link>
或<script>
以及相對URL。 或者,如果沒有<base>
標記的方法,那么只有給定的baseUri
將用於解析整個文檔的相對URL。
絕對URL檢測的目的是什么? 為什么Jsoup需要找到絕對URL?
為了在Element#absUrl()
上返回正確的URL。 這純粹是為了最終用戶的便利。 Jsoup不需要它來成功解析HTML。
最后,但最重要的是:baseUri是HTML頁面的完整URL(如原始文檔中所述)還是HTML頁面的基本URL?
前者。 如果是后者,那么文件就會撒謊。 baseUri
不得與<base href>
混淆。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.