Jsoup.parse() 与 Jsoup.parse() - 或者 Jsoup 中的 URL 检测如何工作?

2023-11-25

Jsoup 有 2htmlparse() 方法:

  1. 解析(字符串 html)- “由于没有指定基本 URI,因此是绝对 URL 检测依赖于包含标签的 HTML。”
  2. 解析(字符串 html,字符串 baseUri)- “HTML 所在的 URL 被检索自。用于将相对 URL 解析为绝对 URL, 发生在 HTML 声明标签之前。”

我很难理解meaning两者之间的区别:

  1. 在第2次parse()版本,“将相对 URL 解析为绝对 URL”是什么意思?beforeHTML 声明了一个<base href>标签”是什么意思?如果<base href> tag never出现在页面中?
  2. 绝对URL检测的目的是什么?为什么Jsoup需要 找到绝对URL?
  3. 最后但也是最重要的一点是:baseUriHTML 页面的完整 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(使用前将#替换为@)

Jsoup.parse() 与 Jsoup.parse() - 或者 Jsoup 中的 URL 检测如何工作? 的相关文章

随机推荐

  • 远程访问docker容器中的web服务器

    我已经开始使用 docker 进行开发 设置如下 主机 ubuntu 服务器 Docker 容器 带 Tomcat 服务器的 Web 应用程序 使用 https 就主机容器访问而言 一切正常 However 我无法从远程计算机访问容器的 w
  • Java多维数组转字符串和字符串转数组

    我有数组 data 转换为字符串 string Arrays deepToString data string 1 1394119227787 59474093 USD DKK true 0 05 5 391582 5 00663 5 39
  • 如何设置onLongPress的持续时间

    I know onLongPress会在一段时间 如 500 毫秒左右 后触发 但我想做的是当用户按下按钮 3 秒左右时触发一些操作 实际上我想设置持续时间onLongPress ElevatedButton onPressed gt pr
  • Coinbase API client.getAccount(...) 开始返回:“错误:无法获取本地颁发者证书”[重复]

    这个问题在这里已经有答案了 该问题于太平洋时间 2020 年 3 月 31 日上午晚些时候开始 对 Coinbase 进行 API 调用的服务器托管在带有 node js GCP 的 Google App Engine 上 几周前 Coin
  • 没有为运行配置定义 SDK

    当我尝试在 PyCharm 中运行我的项目时 出现错误 SDK 未定义运行配置 我尝试设置一个新的翻译并尝试了一切 SDK 是什么意思以及在哪里可以配置它 我刚刚遇到了同样的问题 请参阅上面的评论 对我有用的是进入 编辑配置 删除从原始电脑
  • 哪个 gem 破坏了 Rails application.css.scss 参数数量错误 3 为 2

    好的 这是gem更新引起的新问题 调用 Bundle update 会破坏我的 Rails 应用程序 以下是更改的宝石 Gemfile lock compass 0 12 7 compass 0 12 2 sass gt 3 2 19 sa
  • 在 Windows 8 桌面应用程序上使用 MediaCapture

    在 Windows 8 桌面应用程序上 我需要使用 C 4 5 中的相机拍照 我尝试使用 CameraCaptureUI 类 但它在桌面应用程序上不可用 所以我尝试使用 MediaCapture 类 它可用于 Metro 应用程序或桌面应用
  • 朱利安方法来执行Python的yield(以及yield from)

    朱利安的收益率 以及收益率 方法是什么就像蟒蛇一样 编辑 我将尝试在 python 中添加小示例 想想 4x4 棋盘 找出国际象棋王可以走的每N步长路径 不要浪费内存 gt 为每条路径生成生成器 如果我们用数字签署每个位置 0 1 2 3
  • 在实现中重新包含标头

    假设我有一个标题foo h像这样 ifndef FOO H define FOO H include
  • Spinner 无法加载整数数组?

    我有一个应用程序 其中有一个微调器 我想用一些数字 4 8 12 16 填充它 我使用上述项目在 strings xml 中创建了一个整数数组对象 将 Spinner 的条目设置为整数数组 当我运行应用程序时 我得到 04 19 23 38
  • Vnext 参数 1:无法从“string”转换为“System.IO.Stream”

    我正在尝试创建一个Next 项目中的通用序列化器当我调用 StreamWriter 的构造函数时 它会抛出此编译器错误 错误 CS1503 参数 1 无法从 字符串 转换为 System IO Stream Test ASP NET Cor
  • 从 Javascript 更改 CSS 规则集

    是否可以动态更改 CSS 规则集 即 当用户单击小部件时 某些 JS 会更改 CSS 规则集 这个特定的 CSS 规则集应用于页面上的许多元素 通过类选择器 我想在用户单击小部件时对其进行修改 以便所有具有class change 可以 但
  • 使用 Asp.net 路由的 IRouteHandler.GetHttpHandler 中的会话为 null

    我试图在 IRouteHandler 类的 GettHttpHandler 方法中启用会话 但会话始终为空 有人可以告诉我我做错了什么吗 在 global asax 我有 RouteTable Routes Add All new Rout
  • 多次加载 DLL?

    我正在使用LoadLibrary在 Windows 中加载 DLL 的函数 我的问题是 如果我对同一个 DLL 多次调用此方法 我是否会获得该 DLL 的不同实例的句柄 或者它们都引用同一个实例 此外 这种行为与 Linux SO 文件有何
  • 有什么解决方案可以将验证码添加到 Django-allauth 吗?

    有没有将验证码与 django allauth 一起使用的解决方案 我想在注册表上使用验证码进行标准电子邮件 密码注册 我也需要用 django allauth 来做到这一点 并发现实现django recaptcha封装起来比较简单 配置
  • Node.js (ES6 / Babel) 中 import X 和 import * as X 的区别?

    我有一个 Node js 库lib用 ES6 编写 编译为Babel 其中我导出以下子模块 use strict import as config from config import as db from db import as sto
  • 编译时按架构排除go源文件

    我正在为 Windows 编写一个 Go 程序 其中包含多个包 其中一个包是使用 CGo 调用一些 h 和 c 文件中定义的一些函数 这些 c 文件依赖于 windows h 由于在 Windows 平台上开发非常繁琐 我想制作这个文件中的
  • 防止递归函数中出现 StackOverFlow

    我有一个递归函数BaseClass这依赖于一个protected virtual函数的返回条件 子类可能会错误地覆盖此函数并导致StackOverFlow例外 最糟糕的是有一些缓慢的网络调用 并且异常不会很快发生 许多资源浪费了很长一段时间
  • Swift DateFormatter 可选毫秒[重复]

    这个问题在这里已经有答案了 我有以下代码来解析 ISO8601 日期 let dateFormatter DateFormatter dateFormatter dateFormat yyyy MM dd T HH mm ss SSSZZZ
  • Jsoup.parse() 与 Jsoup.parse() - 或者 Jsoup 中的 URL 检测如何工作?

    Jsoup 有 2htmlparse 方法 解析 字符串 html 由于没有指定基本 URI 因此是绝对 URL 检测依赖于包含标签的 HTML 解析 字符串 html 字符串 baseUri HTML 所在的 URL 被检索自 用于将相对