http://www.open-open.com/jsoup/parsing-a-document.htmcss
測試用網頁html
<!doctype html> <!-- http://jwc.yangtzeu.edu.cn/ --> <html class="outlin colo"> <head> <meta charset="utf-8"> <title>長江大學</title> <link type="text/css" rel="stylesheet" href="./css/reset.css"> <link type="text/css" rel="stylesheet" href="./css/layout.css"> <link type="text/css" rel="stylesheet" href="./css/yangtze.css"> <script src="base.js"></script> <script src="./js/nodeObject.js"></script> <script src="./js/yangtze.js"></script> </head> <body> <div id="content"> <!-- 頂部圖片div --> <div id="header-imageDiv"></div> <!-- 頂部菜單div --> <div id="header-menuDiv"> <div id="header-menu-table"> <div class="header-menu-cell"><a href="#" title="首頁">首頁</a></div> <div class="header-menu-cell"><a href="#" title="機構設置">機構設置</a></div> <div class="header-menu-cell"><a href="#" title="規章制度">規章制度</a></div> <div class="header-menu-cell"><a href="#" title="教學建設">教學建設</a></div> <div class="header-menu-cell"><a href="#" title="教務管理">教務管理</a></div> <div class="header-menu-cell"><a href="#" title="考務管理">考務管理</a></div> <div class="header-menu-cell"><a href="#" title="實踐創新">實踐創新</a></div> <div class="header-menu-cell"><a href="#" title="質量評估">質量評估</a></div> <div class="header-menu-cell"><a href="#" title="學務管理">學務管理</a></div> <div class="header-menu-cell"><a href="#" title="服務指南">服務指南</a></div> <div class="header-menu-cell"><a href="#" title="下載中心">下載中心</a></div> </div> </div> <div class="space"></div> <!-- 頂部時間div --> <div id="header-dateDiv"></div> <div class="space"></div> <!-- 中間的tableDiv --> <div id="table"> <!-- 左側table-cell --> <div id="table-left"> <div id="table-left-imageDiv"></div> <div class="space"></div> <h2 class="h2-style">高教信息<a href="#">+MORE</a></h2> <ul class="ul-type-1"> <li style="color : red;"><img src="./images/li_bg.jpg"> <a href="#">教育部高等教育司2016年工做要點</a></li> <li><img src="./images/li_bg.jpg"> <a href="#">湖北省教育廳高等教育處2016年工做要點</a></li> <li><img src="./images/li_bg.jpg"> <a href="#">湖北省教育廳高等教育處2015年工做要點</a></li> <li><img src="./images/li_bg.jpg"> <a href="#">省委高校工委 省教育廳關於印發201</a></li> <li><img src="./images/li_bg.jpg"> <a href="#">教育部2015年工做要點</a></li> <li><img src="./images/li_bg.jpg"> <a href="#">近兩年就業率較低的本科專業名單</a></li> </ul> <div class="space"></div> <h2 class="h2-style">友情連接</h2> <div id="select-type"></div> </div> <div class="space"></div> <!-- 中間table-cell --> <div id="table-center"> <div id="table-center-topLineDiv"><span id="notice" onmouseover="switchTab(this)">教務通知</span><span id="thisweek" onmouseover="switchTab(this)">本週事務</span></div> <ul id="notice-ul"> <li>關於組織2017年(第十二屆)長江大學大學生化學實驗<span>2017-03-30</span></li> <li>關於覈查文科相關學院2013級畢業班學生成績的通知<span>2017-03-30</span></li> <li>關於組織申報第二批校級雙語教學示範課程的通知<span>2017-03-30</span></li> <li>查看更多...</li> </ul> <ul id="thisweek-ul"> <li>2016~2017學年第二學期6~7月份主要教學工做安排<span>2017-03-30</span></li> <li>2016~2017學年第二學期5月份主要教學工做安排<span>2017-03-30</span></li> <li>2016~2017學年第二學期4月份主要教學工做安排<span>2017-03-30</span></li> <li>2016~2017學年第二學期3月份主要教學工做安排<span>2017-03-30</span></li> <li>查看更多...</li> </ul> <div class="chooseTab"><span>教務通知</span><span>本週事務</span></div> </div> <!-- 右側table-cell --> <div id="table-right"> </div> </div> <div class="space"></div> <!-- 底部的menuDiv --> <div id="bottom-menuDiv"></div> <div class="space"></div> </div> <!-- 最底部的div --> <div id="footer"></div> <script> setup(); switchTab(elementById("notice")); addEventss(); </script> </body> </html>
Java代碼java
import java.io.File; import java.util.ArrayList; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class App { public static void main(String args[]) { try { File input = new File("/Users/YouXianMing/Documents/Project/HTML Project/yangtze/yangtze.html"); Document doc = Jsoup.parse(input, "UTF-8", "http://yangtze.com/"); // 根據元素id獲取元素 { Element content = doc.getElementById("content"); System.out.println(content); } // 根據CSS的class名獲取元素數組 { ArrayList<Element> list = doc.getElementsByClass("space"); for (Element element : list) { System.out.println(element + "\n"); } } // 根據標籤獲取元素數組 { ArrayList<Element> list = doc.getElementsByTag("div"); for (Element element : list) { System.out.println(element + "\n"); } } // 根據元素中含有的屬性值獲取元素數組 { ArrayList<Element> list = doc.getElementsByAttribute("href"); for (Element element : list) { System.out.println(element + "\n"); } } // 根據元素中含有的屬性值獲取元素數組 { Element content = doc.getElementById("header-menu-table"); // 元素的父元素 System.out.println(content.parent()); // 元素的全部子元素 System.out.println(content.children()); // 與該元素平級的第一個兄弟元素 System.out.println(content.child(0).firstElementSibling()); // 與該元素平級的最後一個兄弟元素 System.out.println(content.child(0).lastElementSibling()); // 該元素的前一個兄弟元素 System.out.println(content.child(1).previousElementSibling()); // 該元素的下一個兄弟元素 System.out.println(content.child(0).nextElementSibling()); } // 一個元素中的數據 { Element content = doc.getElementsByClass("ul-type-1").first().child(0); // 獲取文本內容 System.out.println(content.text()); // 獲取tag名字 System.out.println(content.tagName()); // 獲取tag對象 System.out.println(content.tag()); // 獲取屬性字典 System.out.println(content.attributes()); // 獲取當前內容當中的html內容 System.out.println(content.html()); // 獲取外部的html內容 System.out.println(content.outerHtml()); // 獲取屬性style的值 System.out.println(content.attr("style")); } // 使用選擇器語法來查找元素 { Elements elements = null; // 經過標籤查找元素 elements = doc.select("a"); System.out.println(elements); // 經過id查找元素 elements = doc.select("#content"); System.out.println(elements); // 經過class查找元素 elements = doc.select(".ul-type-1"); System.out.println(elements); // 經過屬性查找元素 elements = doc.select("[href]"); System.out.println(elements); // 經過屬性前綴查找元素 elements = doc.select("[^hr]"); System.out.println(elements); // 經過屬性值來查找元素 elements = doc.select("[id=notice]"); System.out.println(elements); // 匹配屬性值開頭 elements = doc.select("[onmouseover^=swit]"); System.out.println(elements); // 匹配屬性值結尾 elements = doc.select("[onmouseover$=(this)]"); System.out.println(elements); // 匹配包含了屬性值 elements = doc.select("[onmouseover*=Tab]"); System.out.println(elements); // 正則表達式匹配 elements = doc.select("ul[id~=^notice]"); System.out.println(elements); } } catch (Exception e) { System.out.println(e); } } }
注意node
如下地方請自行替換,本人是從本地加載的html正則表達式
如下是獲取元素的幾種情形數組