使用 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 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 解析代碼。