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

如何用Jsoup在div.g中筛选指定class的a标签并排除特定标签?

解决Jsoup选择器错误匹配的问题

我来帮你搞定这个Jsoup解析的坑!你现在的问题是选择器没写精准,导致误选了带相似class后缀的a标签,咱们一步步修正:

核心问题分析

你之前的选择器大概率用了模糊匹配(比如a[class*="_PMs"]),这种写法会匹配所有class属性里包含_PMs字符串的元素,自然会把_MHs、_OMs这类带相似后缀的也捞进来。咱们需要的是精准匹配指定class的元素。

修正后的实现步骤

  1. 先定位到所有目标容器div.g,避免全局查找干扰
  2. 在每个div.g内部,精准筛选符合要求的a标签:
    • 同时拥有l和_PMs两个class的a标签:用a.l._PMs(多个class用.连写,表示同时满足)
    • 拥有_pJsclass的a标签:用a._pJs
    • 用逗号分隔两个选择器,表示“或”的关系

完整代码示例

// 假设你已经通过Jsoup获取到了Document对象doc
Elements gDivs = doc.select("div.g");
DefaultListModel<String> listModel = new DefaultListModel<>();

for (Element div : gDivs) {
    // 精准筛选当前div下的目标a标签
    Elements targetLinks = div.select("a.l._PMs, a._pJs");
    
    for (Element link : targetLinks) {
        String linkText = link.text().trim();
        // 过滤空文本,避免列表出现空项
        if (!linkText.isEmpty()) {
            listModel.addElement(linkText);
        }
    }
}

// 将结果绑定到JList
yourJList.setModel(listModel);

关键说明

  • Jsoup的.选择器是精准匹配class的,a.l._PMs只会选择同时包含l和_PMs这两个class的a元素,不管这些class在属性里的顺序,也不会误匹配其他带相似字符串的class。
  • 限定在div.g内部查找,能避免页面其他位置的同类a标签混入结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:23:13