Jsoup.parse() 与 Jsoup.parse() - 或者 Jsoup 中的 URL 检测如何工作?
Jsoup 有 2 个 html parse() 方法:
- parse(String html) - “由于没有指定基本 URI,因此绝对 URL 检测依赖于包含标签的 HTML。”
- parse(String html, String baseUri) - "HTML 所在的 URL 被检索自。用于将相对 URL 解析为绝对 URL, 在 HTML 声明标签之前发生。”
我很难理解两者之间差异的含义:
- 在第二个
parse()
版本中,“将发生的相对 URL 解析为绝对 URL before HTML 声明
标记”是什么意思?如果
标签从未出现在页面中? - 绝对URL检测的目的是什么?为什么Jsoup需要 找到绝对URL?
- 最后但最重要的是:
baseUri
是 HTML 页面的完整 URL (如原始文档中的措辞)还是它的基本 URL HTML 页面?
Jsoup has 2 html parse() methods:
- parse(String html) - "As no base URI is specified, absolute URL
detection relies on the HTML including a tag." - parse(String html, String baseUri) - "The URL where the HTML
was retrieved from. Used to resolve relative URLs to absolute URLs,
that occur before the HTML declares a tag."
I am having a difficulty understanding the meaning of the difference between the two:
- In the 2nd
parse()
version, what does "resolve relative URLs to absolute URLs, that occur
before the HTML declares a<base href>
tag" mean? What if a<base href>
tag never occurs in the page? - What is the purpose of absolute URL detection? Why does Jsoup need
to find the absolute URL? - Lastly, but most importantly: Is
baseUri
the full URL of HTML page
(as phrased in original documentation) or is it the base URL of
the HTML page?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它用于
元素等#absUrl()
以便您可以检索、
、
、
等。例如,
如果您想下载和/或解析也链接了资源。
某些(较差的)网站可能声明了
或
在
标记之前带有相对 URL。或者,如果没有
标记,则仅使用给定的baseUri
来解析整个文档的相对 URL。以便在
Element#absUrl()
上返回正确的URL。这纯粹是为了最终用户的方便。 Jsoup 不需要它来成功地自行解析 HTML。前者。如果是后者,那么文档就会撒谎。
baseUri
不得与
混淆。It's used for among others
Element#absUrl()
so that you can retrieve the (intended) absolute URL of an<a href>
,<img src>
,<link href>
,<script src>
, etc. E.g.This is very useful if you want to download and/or parse the linked resources as well.
Some (poor) websites may have declared a
<link>
or<script>
with a relative URL before the<base>
tag. Or if there is no means of a<base>
tag, then just the givenbaseUri
will be used for resolving relative URLs of the entire document.In order to return the right URL on
Element#absUrl()
. This is purely for enduser's convenience. Jsoup doesn't need it in order to successfully parse the HTML at its own.The former. If the latter, then documentation would be lying. The
baseUri
must not to be confused with<base href>
.