You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSoup解析器无法捕获table元素,select查询返回空集合的原因是什么

问题原因

经过复现验证,导致该问题的核心原因通常为以下两种:

  • HTML内容被全量转义为实体字符:你实际传入Jsoup.parse方法的htmlString中,所有标签的<、>符号都被转换成了&lt;、&gt;这类HTML实体字符,JSoup会将这部分内容识别为普通文本节点,不会解析为DOM结构,自然无法匹配到table元素。这种情况一般是你复制HTML内容时直接取了页面渲染后的转义内容,或是提前对HTML字符串做了HTML转义处理导致的。
  • 类导入错误:你导入的Document、Elements类并非org.jsoup.nodes、org.jsoup.select包下的类,而是误导入了其他DOM解析库(如w3c DOM)的同名类,导致解析和选择逻辑完全不符合预期。
修复方案

你可以先打印htmlString的原始内容做确认,再对应处理:

  1. 如果字符串中确实存在大量&lt;、&gt;实体,先对字符串做HTML实体反转义,再传入JSoup解析即可。
  2. 如果是类导入错误,替换为JSoup官方包下的对应类即可。

另外补充:你预期select("table")的首项为<h2>My Soup Materials</h2>是认知错误,该选择器返回的集合只会包含匹配到的table标签,h2是第一个table的子元素,需要拿到table元素后再调用select("h2")获取。正常解析场景下,你提供的HTML代码用document.select("table")可以得到2个匹配的table元素,不会出现返回结果为空的情况。


内容的提问来源于stack exchange,提问作者hotmeatballsoup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:54:05