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

JSoup如何提取p标签内带image-holder类子元素的a标签href属性

解决方案

你可以直接使用JSoup内置的:has()伪类选择器实现需求,它可以筛选出包含指定子元素的父元素,修改后的代码如下:

try {
    Document doc = Jsoup.connect("https://urltoextractfrom.com").get();
    // 选择器说明:p标签下的带href属性的a标签,且a标签有直接子元素span类名为image-holder
    Elements selections = doc.select("p a[href]:has(> span.image-holder)");
    for (Element aTag : selections) {
        // 直接提取href属性值
        String targetUrl = aTag.attr("href");
        System.out.println(targetUrl);
    }
} catch (Exception e) {
    e.printStackTrace();
}

选择器说明

  • p:限定父元素为p标签
  • a[href]:筛选p标签下所有带有href属性的a标签
  • :has(> span.image-holder):对筛选出的a标签做二次过滤,仅保留直接子元素中存在class为image-holder的span的a标签,>用于限定span是a的直接子元素,避免匹配到嵌套更深的span元素,完全符合需求。

如果需要对提取到的URL去重,可以用HashSet存储结果:

Set<String> urlSet = new HashSet<>();
for (Element aTag : selections) {
    urlSet.add(aTag.attr("href"));
}
// 遍历去重后的URL
for (String url : urlSet) {
    System.out.println(url);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:27:02