http://www.open-open.com/jsoup/parsing-a-document.htm

测试用网页

<!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代码

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);
}
}
}

注意

以下地方请自行替换,本人是从本地加载的html

以下是获取元素的几种情形

Jsoup的简易使用示例的更多相关文章

  1. 【前端】ACE Editor 简易使用示例

    身为一个早已退役的Oier,当然忘不了当年一个个OJ页面上的代码显示和代码编辑器. 其中,洛谷使用的ACE Editor就是之一,非常的简洁美观.以及实际上在前端页面上搭建一个ACE Editor也是 ...

  2. 【前端】ACE Editor(代码编辑器) 简易使用示例

    身为一个早已退役的Oier,当然忘不了当年一个个OJ页面上的代码显示和代码编辑器. 其中,洛谷使用的ACE Editor就是之一,非常的简洁美观.以及实际上在前端页面上搭建一个ACE Editor也是 ...

  3. C# 网络编程之简易聊天示例

    还记得刚刚开始接触编程开发时,傻傻的将网站开发和网络编程混为一谈,常常因分不清楚而引为笑柄.后来勉强分清楚,又因为各种各样的协议端口之类的名词而倍感神秘,所以为了揭开网络编程的神秘面纱,本文尝试以一个 ...

  4. 【前端】wangEditor(富文本编辑器) 简易使用示例

    转载请说明作者或者注明出处,谢谢 说到前端常用的编辑器,自然也少不了富文本编辑器(RichText Editor) 笔者在此之前也看了一些相关的在线编辑器,其中包括了当百度搜索“富文本编辑器”字样时出 ...

  5. 0048 MyBatis动态SQL简易入门示例

    假如有如下的关于书籍基本信息的表: DROP DATABASE IF EXISTS `books`; CREATE DATABASE `books`; USE books; DROP TABLE IF ...

  6. Couchbase之个人描述及入门示例

    本文不打算抄袭官方或者引用他人对Couchbase的各种描述,仅仅是自己对它的一点理解(错误之处,敬请指出),并附上一个入门示例. ASP.NET Web项目(其他web开发平台也一样)应用规模小的时 ...

  7. jsoup Cookbook(中文版)--爬虫(java)

    转载:http://www.open-open.com/jsoup/ 目录: 入门 解析和遍历一个html文档 输入 解析一个html字符串 解析一个body片断 根据一个url加载Document对 ...

  8. Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证

    本文通过一个简易安全认证示例的开发实践,理解过滤器和拦截器的工作原理. 很多文章都将过滤器(Filter).拦截器(Interceptor)和监听器(Listener)这三者和Spring关联起来讲解 ...

  9. jsoup Cookbook(中文版)-Jsoup解析HTML

    jsoup Cookbook(中文版) 入门 1.      解析和遍历一个html文档 如何解析一个HTML文档: String html = "<html><head& ...

随机推荐

  1. COMException: The data necessary to complete this operation is not yet available.

    问题描述: 最近在公司AE项目中遇到了下面的问题: COMException: The data necessary to complete this operation is not yet ava ...

  2. Python_time模块

    time模块:用于时间的访问和转换 UTC:协调世界时(世界统一时间) 时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总 ...

  3. 如何确定系统上的CPU插槽数量

    环境 Red Hat Enterprise Linux 7 Red Hat Enterprise Linux 6 Red Hat Enterprise Linux 5 Red Hat Enterpri ...

  4. NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序

    原文链接https://www.cnblogs.com/zhouzhendong/p/9258043.html 题目传送门 - 洛谷P3953 题目传送门 - Vijos P2030 题意 给定一个有 ...

  5. 07. Matplotlib 3 |表格样式| 显示控制

    1.表格样式创建 表格视觉样式:Dataframe.style → 返回pandas.Styler对象的属性,具有格式化和显示Dataframe的有用方法 样式创建:① Styler.applymap ...

  6. TF:利用TF的train.Saver将训练好的variables(W、b)保存到指定的index、meda文件—Jason niu

    import tensorflow as tf import numpy as np W = tf.Variable([[2,1,8],[1,2,5]], dtype=tf.float32, name ...

  7. Qt Creator插件Todo

     转载:http://techieliang.com/2017/12/502/   文章目录 1. 插件启动 2. 插件效果 3. 插件配置 4. 使用 码代码的过程往往并不是一气呵成,有时候需要记录 ...

  8. POJ 3061 Subsequence【二分答案】||【尺取法】

    <题目链接> 题目大意: 给你一段长度为n的整数序列,并且给出一个整数S,问你这段序列中区间之和大于等于S的最短区间长度是多少. 解题分析:本题可以用二分答案做,先求出前缀和,然后枚举区间 ...

  9. Codeforces 1118F1 Tree Cutting (Easy Version) (简单树形DP)

    <题目链接> 题目大意: 给定一棵树,树上的点有0,1,2三中情况,0代表该点无色.现在需要你将这棵树割掉一些边,使得割掉每条边分割成的两部分均最多只含有一种颜色的点,即分割后的两部分不能 ...

  10. Linux学习之后台任务与定时任务(二十)

    Linux学习之后台任务与定时任务 目录 后台任务 把进程放入后台 查看后台任务 将后台暂停的工作恢复到前台执行 将后台暂停的工作恢复到后台执行 定时任务 手动启动服务 将服务设置为自启动 用户的co ...