從 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 新聞
參考資源