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

JSoup技术实现:如何从指定div内的列表提取链接?

用JSoup提取页面链接:基础方法与范围限定技巧

嘿,我来帮你搞定JSoup提取链接的问题,尤其是你提到的限定在特定div内列表链接的场景!咱分两部分来讲,结合你的代码做优化说明。

一、提取整个页面的所有链接

如果要抓取页面上所有可点击的链接,JSoup的选择器可以一步到位:

// 先解析页面得到Document对象
Document doc = Jsoup.parse(input, "UTF-8");
// 选中所有带href属性的<a>标签
Elements allLinks = doc.select("a[href]");

// 遍历输出链接文本和地址
for (Element link : allLinks) {
    String linkText = link.text();
    // 用abs:href获取绝对URL,避免相对路径的问题
    String linkUrl = link.attr("abs:href");
    System.out.println("链接文本:" + linkText + " | 链接地址:" + linkUrl);
}

这里的a[href]选择器会精准匹配所有包含href属性的<a>标签,abs:href是JSoup的贴心功能——自动根据页面的基础URL把相对路径转换成绝对路径,后续用起来更省心。

二、限定在特定div内的列表链接(你的核心需求)

你的代码已经在定位div.side_categories了,接下来要提取这个div里列表中的链接,其实可以用更简洁的链式选择器,一步定位到目标,不需要分步取ul、li。

优化后的代码示例

private void basicJSoup() throws Exception {
    properties.loadFromXML(App.class.getResourceAsStream("/properties.xml"));
    LOG.fine(properties.toString());
    URI inputURI = new URI(properties.getProperty("html_input"));
    File input = new File(inputURI);
    Document doc = Jsoup.parse(input, "UTF-8");

    // 方法1:直接用链式选择器定位目标链接
    Elements targetLinks = doc.select("div.side_categories ul li a[href]");

    // 方法2:先定位到目标div,再在其内部选择链接(适合页面有多个同class div的场景)
    // Element sideCategories = doc.select("div.side_categories").first();
    // Elements targetLinks = sideCategories.select("ul li a[href]");

    // 遍历输出分类名称和链接
    for (Element link : targetLinks) {
        String categoryName = link.text();
        String categoryUrl = link.attr("abs:href");
        LOG.info("分类名称:" + categoryName);
        LOG.info("分类链接:" + categoryUrl);
    }
}

关键选择器解释

div.side_categories ul li a[href]这个选择器的逻辑是:

  1. 先找到class为side_categories的<div>标签
  2. 选中该div内部的所有<ul>列表
  3. 再选中ul里的所有<li>项
  4. 最后定位到li中带href属性的<a>标签,精准锁定你要的列表链接

额外小技巧

  • 如果要排除无效链接(比如javascript:void(0)这类),可以给选择器加过滤:div.side_categories ul li a[href]:not([href^=javascript]),这样就能跳过以javascript开头的无效链接。
  • 如果你需要的是相对路径,把attr("abs:href")换成attr("href")即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:05:20