jsoup jsoup-1.18.1¶
jsoup是什么¶
jsoup是一个用于解析和处理HTML的Java库。它提供了一种简洁的API,可以从URL、文件或字符串中提取和操作数据。jsoup不仅能够解析HTML文档,还能通过DOM、CSS选择器和jQuery风格的操作来操作文档内容,使得网页抓取和数据提取变得更加简单和高效。
为什么要使用jsoup?¶
使用jsoup的原因有很多。首先,它的API设计简单易用,适合初学者和专业开发者。其次,jsoup能够处理不规范的HTML,自动修复常见的错误,使得解析过程更加顺畅。此外,jsoup支持CSS选择器,允许用户以直观的方式提取所需的数据。最后,jsoup的性能优越,能够高效地处理大规模的HTML文档,适合各种应用场景。
jsoup-1.18.1版本更新了什么¶
在jsoup-1.18.1版本中,进行了多项重要的改进和修复:
改进
- 流解析器:提供了逐步解析输入的功能。每当一个元素完成时,它会通过流或迭代器接口发出。返回的元素将包含所有子元素,并在适用时包含一个(空的)下一个兄弟元素。解析过程中可以从DOM中移除元素,以节省内存,适用于处理过大的输入文档,同时仍然提供DOM接口。
- 下载进度:新增响应进度事件接口,报告下载和解析的进度和URL,支持会话和单个连接级别。
- 新增路径解析方法:支持接受路径的解析方法,如Jsoup.parse(Path)
等。
- 按钮标签配置更新:在Element.text()
方法中,多个按钮元素之间添加了空格。
- 命名空间选择器支持:新增对ns|*
所有元素的支持。
- 属性名规范化:在序列化过程中,替换无效字符为_
,而不是直接剥离,以使过程更清晰。
变更 - 移除了之前已弃用的内部类和方法。 - 构建更改:构建的jar的OSGi清单不再导入自身。
错误修复
- 修复了跟踪源位置时,如果第一个节点是TextNode,其位置错误设置为-1的问题。
- 改进了URL编码过程,以正确处理路径中包含的特殊字符。
- 修复了使用W3CDom
时自定义输出文档抛出空指针异常的问题。
- 修复了:has()
选择器在使用兄弟组合器时的匹配问题。
- 修复了:empty
选择器错误匹配以空白文本节点开头的元素的问题。
- 修复了Element.cssSelector()
在构建选择器时遇到平衡标记错误的问题。
- 更新了Entities.escape(string)
以适用于文本节点和属性的转义。
- 修复了在规范化正则表达式中解析特制<base href>
URL时可能导致的栈溢出异常。
更新日志¶
改进
- 流解析器:提供逐步解析输入的功能,支持从DOM中移除元素以节省内存。
- 下载进度:新增响应进度事件接口,支持会话和单个连接级别。
- 新增路径解析方法,如Jsoup.parse(Path)
。
- 更新按钮标签配置,多个按钮元素之间添加空格。
- 新增对命名空间选择器的支持。
- 属性名规范化时,替换无效字符为_
。
变更 - 移除已弃用的内部类和方法。 - 构建更改:jar的OSGi清单不再导入自身。
错误修复
- 修复跟踪源位置时的错误。
- 改进URL编码过程,正确处理特殊字符。
- 修复使用W3CDom
时的空指针异常。
- 修复:has()
选择器和:empty
选择器的问题。
- 修复Element.cssSelector()
的选择器构建问题。
- 更新Entities.escape(string)
以适用于文本节点和属性的转义。
- 修复栈溢出异常问题。