jsoup 1.18.2 发布,Java HTML 解析器

来源: OSCHINA
2024-11-27 10:30:38
AI总结

jsoup 1.18.2 现已发布,新的流解析器提供了混合 DOM + SAX 事件驱动的解析接口、请求进度跟踪和许多其他改进。jsoup 是一个用于处理 real-world HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器提供了一个非常方便的 API 用于提取和操作数据。

下载地址:https://jsoup.org/download

具体更新内容包括:

改进

  • 优化了整个输入读取和解析流程中的吞吐量和内存使用,堆分配和 GC 下降了 -6% 到 -89% 之间,小输入的吞吐量提高了 +143%。大多数输入大小的吞吐量将增加约 20%。这些性能改进是通过回收用于读取和解析输入的 backingbyte[]char[]数组来实现的。2186
  • 当输入包含补充平面中的 UTF 字符时,将html()Entities.escape()速度优化约49% 。2183
  • 现在FormElement.elements()返回的表单关联元素会反映出在原始解析之后对 DOM 所做的更改。2140
  • TreeBuilder中,onNodeInserted()onNodeClosed()事件现在也会针对 outermost / root Document node 触发。这将启用 Document 节点的源位置跟踪(以前未设置)。这也使节点遍历器能够看到外部 Document 节点。2182
  • 现在可以使用Elements#set(),inline 方式交换选定元素的位置。2212

Bug 修复

  • 如果元素的类包含* 字符,Element.cssSelector()将失效。2169
  • 跟踪源范围时,无效 self-closing 元素后面的文本节点可能不会被跟踪。2175
  • 当文档没有 doctype,或者 doctype 未命名html时,应以 Quirks 模式进行解析。2197
  • 使用像div:has(span + a)这样的选择器时,has()组件无法正常工作,因为内部组合查询会导致评估器匹配外部的同级元素,而不是子元素。2187
  • 在嵌套的:has()中包含多个:has()组件的选择器查询可能会无法正确执行。2131
  • 当响应中的 cookie 名称重复时,通过Connection.Response#cookies()提供的 cookie 简单视图将提供最后一个 cookie 集。一般情况下,最好使用 Jsoup.newSession 方法来维护 cookie jar,因为该方法会在发出请求时对 cookie 应用适当的路径选择。1831
  • 遵循 tokenizer 中的当前 HTML 规范,允许将<作为 tag name 的一部分,而不是将其作为字符节点输出。2230
  • 类似地,允许以<作为属性名称的开头,而不是创建新元素。1483

详情可查看更新说明:https://github.com/jhy/jsoup/releases/tag/jsoup-1.18.2

展开阅读全文
点击引领话题📣 发布并加入讨论🔥
0 评论
2 收藏
分享
AI总结
返回顶部
顶部