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

Jsoup 系列學習 (二):解析 HTML 文件與資料提取實戰

     編輯:Java 綜合教學

從 URL 獲取並解析 HTML

// 發送請求獲取 Document
Document doc = Jsoup.connect("https://www.baidu.com/").get();

// 透過 ID 定位元素
Element element = doc.getElementById("kw");
// 輸出該元素所有屬性
System.out.println(element.attributes());
輸出結果:
id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off"

百度首頁元素檢視

Connection 方法鏈 - 處理複雜請求

Document doc = Jsoup.connect("https://example.com")
    .data("query", "Java")
    .userAgent("Mozilla")
    .cookie("auth", "token")
    .timeout(3000)
    .post();

DOM 方式遍歷與資料提取

查找元素 API

  • getElementById(String id)
  • getElementsByTag(String tag)
  • getElementsByClass(String className)
  • getElementsByAttribute(String key)
  • 兄弟節點:siblingElements(), firstElementSibling()...
  • 父子關係:parent(), children(), child(int index)

元素資料操作

  • 屬性:attr(key) 取值 / attr(key, value) 設值 / attributes() 所有屬性
  • ID/Class:id(), className(), classNames()
  • 文本:text() 取純文本 / text(value) 設文本
  • HTML:html() 取內部 HTML / html(value) 設 HTML / outerHtml() 取外部 HTML
  • 資料:data() (script/style 內容)
  • 標籤:tag(), tagName()

HTML 操作

  • append/prepend(String html)
  • appendText/prependText(String text)
  • appendElement/prependElement(String tagName)

實戰範例

範例 1:提取輸入框 name 屬性

Document doc = Jsoup.connect("https://www.baidu.com/").get();
Elements elements = doc.getElementsByClass("s_ipt");
String name = elements.get(0).attr("name");
System.out.println(name); // 輸出: wd

範例 2:相對路徑定位無 ID 元素 (如導航欄)

Document doc = Jsoup.connect("https://www.baidu.com/").get();
Element firstLi = doc.getElementById("u1").child(0); // 取 ul#u1 下第一個 li
String href = firstLi.attr("href"); // 連結
String text = firstLi.text();     // 顯示文本
System.out.println(href + " " + text); // 輸出: https://news.baidu.com 新聞

參考資源

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