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

如何通过HTML内容在Jsoup中选取元素?是否有变通方案?

用Jsoup选取包含LOCATION: 的元素解决方案

嘿,我来帮你搞定这个问题!你遇到的核心点是 这个HTML实体在Jsoup解析后会被转换成对应的Unicode非换行空格(\u00A0),直接用普通空格匹配肯定找不到,下面给你几个可行的方案:

方案一:使用:contains()选择器精准匹配

因为Jsoup会把 解析为\u00A0,所以可以直接在:contains()里用这个字符来匹配:

// 解析文档后执行
Elements targetElements = doc.select(":contains(LOCATION:\u00A0)");

这个方法简单直接,适合你确定文本里就是 而非普通空格的场景。

方案二:用正则匹配兼容多种空白符

如果页面里可能混合了普通空格和 ,或者你想更灵活匹配,建议遍历元素并用正则检查文本:

Elements allElements = doc.getAllElements();
List<Element> resultElements = new ArrayList<>();
// 正则匹配LOCATION:后面跟任意空白符(包括\u00A0和普通空格)
Pattern locationPattern = Pattern.compile("LOCATION:\\s", Pattern.CASE_INSENSITIVE);

for (Element elem : allElements) {
    if (locationPattern.matcher(elem.text()).find()) {
        resultElements.add(elem);
    }
}

这里的\s正则符号会匹配所有空白字符,完美覆盖&nbsp;和普通空格的情况。

方案三:缩小标签范围提升效率

如果你知道目标文本所在的标签类型(比如<span>、<div>),可以先限定标签再匹配,这样不用遍历整个文档的所有元素,效率更高:

// 假设文本在<span>标签内
Elements elements = doc.select("span:contains(LOCATION:\u00A0)");

额外提示

如果目标文本被嵌套在子标签里(比如<div>LOCATION:&nbsp;<span>Beijing</span></div>),elem.text()会自动合并所有子元素的文本内容,所以上述方法依然能正常匹配到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:14:18