Jsoup 有 2htmlparse() 方法:
-
解析(字符串 html)- “由于没有指定基本 URI,因此是绝对 URL
检测依赖于包含标签的 HTML。”
-
解析(字符串 html,字符串 baseUri)- “HTML 所在的 URL
被检索自。用于将相对 URL 解析为绝对 URL,
发生在 HTML 声明标签之前。”
我很难理解meaning两者之间的区别:
- 在第2次
parse()
版本,“将相对 URL 解析为绝对 URL”是什么意思?beforeHTML 声明了一个<base href>
标签”是什么意思?如果<base href>
tag never出现在页面中?
- 绝对URL检测的目的是什么?为什么Jsoup需要
找到绝对URL?
- 最后但也是最重要的一点是:
baseUri
HTML 页面的完整 URL
(如原始文档中所述)还是base网址为
HTML 页面?
它用于除其他外Element#absUrl()这样您就可以检索某个文件的(预期的)绝对 URL<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>
标签从未出现在页面中?
一些(差的)网站可能已经声明了<link>
or <script>
带有相对 URLbefore the <base>
标签。或者如果没有办法<base>
标签,然后就是给定的baseUri
将用于解析整个文档的相对 URL。
绝对URL检测的目的是什么?为什么Jsoup需要查找绝对URL?
为了返回正确的 URLElement#absUrl()
。这纯粹是为了最终用户的方便。 Jsoup 不需要它来成功地自行解析 HTML。
最后但最重要的是:baseUri 是 HTML 页面的完整 URL(如原始文档中的措辞)还是 HTML 页面的基本 URL?
前者。如果是后者,那么文档就会撒谎。这baseUri
一定不要与<base href>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)