首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Jsoup 獲取 HTML 中最後一個符合條件的 <a> 標籤

     編輯:程式設計綜合問答

問題描述

使用 Jsoup 解析 HTML,通過 doc.select("td") 獲取所有 <td> 元素,再篩選 class="good" 的元素。現有代碼會輸出所有符合條件的元素,但需求是只獲取最後一個。

原始代碼

Document doc = Jsoup.parse(input, "UTF-8", "");
Elements hrefss = doc.select("td");
for (Element elem : hrefss) {
    if (elem.hasClass("good")) {
        System.out.println(elem.text());
    }
}

解決方案

方法一:利用 Elements 列表索引直接取最後元素(推薦)

Elements goodElements = doc.select("td.good"); // 直接用 CSS 選擇器篩選
if (!goodElements.isEmpty()) {
    Element last = goodElements.last(); // 獲取最後一個
    System.out.println(last.text());
    // 若需  標籤屬性:
    Element lastLink = last.select("a").last();
    if (lastLink != null) {
        System.out.println(lastLink.attr("href"));
    }
}

方法二:循環記錄最大索引(兼容舊邏輯)

Element target = null;
for (Element elem : hrefss) {
    if (elem.hasClass("good")) {
        target = elem; // 循環結束時 target 即為最後一個
    }
}
if (target != null) {
    System.out.println(target.text());
}

關鍵點提示

  • select("td.good") 比遍歷後判斷 hasClass() 更高效、代碼更簡潔。
  • Elements.last() 直接返回列表尾部元素,無需手動計算索引。
  • 若需嵌套標籤(如 <td class="good"><a>...</a></td>),鏈式調用 select("a").last()。

完整示例

String html = "<table><tr><td class='good'><a href='/1'>Link 1</a></td></tr>"
            + "<tr><td class='good'><a href='/2'>Link 2</a></td></tr></table>";
Document doc = Jsoup.parse(html);
Element lastGoodTd = doc.select("td.good").last();
if (lastGoodTd != null) {
    Element lastA = lastGoodTd.select("a").last();
    System.out.println("Text: " + lastA.text());
    System.out.println("Href: " + lastA.attr("abs:href")); // 獲取絕對路徑
}

掌握 Jsoup 選擇器與 Elements 集合操作,能大幅簡化 HTML 解析代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved