Jsoup有2个 html parse()方法:
我很难理解意思两者之间的差异:
parse()
版本中,“解析发生的绝对URL的相对URL”是什么
之前 HTML声明<base href>
标记“是什么意思?如果是的话
页面中出现<base href>
标记从不?baseUri
是HTML网页的完整网址
(如原始文档中所述)或者是 base 的URL
HTML页面?答案 0 :(得分:4)
它用于其他Element#absUrl()
,以便您可以检索<a href>
,<img src>
,<link href>
,<script src>
的(预期)绝对网址,等。
for (Element link : document.select("a")) {
System.out.println(link.absUrl("href"));
}
如果您还想下载和/或解析链接的资源,这非常有用。
在第二个parse()版本中,“解析绝对URL的相对URL,在HTML声明
<base href>
标记之前发生的”是什么意思?如果页面中永远不会出现<base href>
标记怎么办?
某些(可怜的)网站可能在<{em} <link>
标记之前声明了<script>
或<base>
相对网址。或者,如果没有<base>
标记,则只需使用给定的baseUri
来解析整个文档的相对网址。
绝对URL检测的目的是什么?为什么Jsoup需要找到绝对URL?
要在Element#absUrl()
上返回正确的网址。这纯粹是为了最终用户的便利。 Jsoup不需要它来成功解析HTML。
最后,但最重要的是:baseUri是HTML网页的完整网址(如原始文档中所述)还是HTML网页的基本网址?
前者。如果是后者,那么文件就会撒谎。 baseUri
不得与<base href>
混淆。