Jsoup的簡易使用示例

 

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">&nbsp;<a href="#">教育部高等教育司2016年工做要點</a></li>
                    <li><img src="./images/li_bg.jpg">&nbsp;<a href="#">湖北省教育廳高等教育處2016年工做要點</a></li>
                    <li><img src="./images/li_bg.jpg">&nbsp;<a href="#">湖北省教育廳高等教育處2015年工做要點</a></li>
                    <li><img src="./images/li_bg.jpg">&nbsp;<a href="#">省委高校工委 省教育廳關於印發201</a></li>
                    <li><img src="./images/li_bg.jpg">&nbsp;<a href="#">教育部2015年工做要點</a></li>
                    <li><img src="./images/li_bg.jpg">&nbsp;<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正則表達式

如下是獲取元素的幾種情形數組

相關文章
相關標籤/搜索