簡體   English   中英

Jsoup.parse()與Jsoup.parse() - 或者如何在Jsoup中使用URL檢測?

[英]Jsoup.parse() vs. Jsoup.parse() - or How does URL detection work in Jsoup?

Jsoup有2個html parse()方法:

  1. parse(String html) - “由於沒有指定基URI,絕對URL檢測依賴於包含標記的HTML。”
  2. parse(String html,String baseUri) - “檢索HTML的URL。用於解析在HTML聲明標記之前發生的絕對URL的相對URL。”

我很難理解兩者之間差異的含義

  1. 在第二個parse()版本中,“解析絕對URL的相對URL,在HTML聲明<base href>標記之前發生的”是什么意思? 如果<base href>標簽永遠不會出現在頁面中怎么辦?
  2. 絕對URL檢測的目的是什么? 為什么Jsoup需要找到絕對URL?
  3. 最后,但最重要的是: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM