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. WinRAR 0day漏洞

    WinRAR 0day漏洞(附利用过程) 英国安全机构Mohammad Reza Espargham的漏洞实验室发现,流行压缩工具WinRAR 5.21最新版里存在一个安全漏洞,目前该漏洞还属于零日漏 ...

  2. 元素滚动到底部或顶部时阻止body滚动

    移动端的弹窗内容有滚动条,滚动到底部或顶部时或影响弹窗下的body滚动,某些浏览器滚动到顶部时不松手就触发了刷新页面的情况,如果不需要这样的默认体验,就需要加一下判断了. var startX,sta ...

  3. pageHelper多个sql分页

    之前有个需求,在一个页面中需要有多个sql分页查询然后放到一个list中,展示,但是会出现一个bug,就是每次分页都会展示第一条查出的所有的数据: 第一页 第二页 因为是截的生产环境,第一条数据被处理 ...

  4. mysql order by多个字段

    Mysql order by 多字段排序 mysql单个字段降序排序: select * from table order by id desc; mysql单个字段升序排序: select * fr ...

  5. 2017Nowcoder Girl D - 打车

    题目描述 妞妞参加完Google Girl Hackathon之后,打车回到了牛家庄. 妞妞需要支付给出租车司机车费s元.妞妞身上一共有n个硬币,第i个硬币价值为p[i]元. 妞妞想选择尽量多的硬币, ...

  6. vue组件通信那些事儿

    一.说说通信 通信,简言之,交流信息.交流结束后,把信息放在哪里,这是一个值得思考的问题.vue中保存状态有2种方式,组件内的data属性和组件外的vuex的state属性. 1.用state的场景 ...

  7. z-index使用及一定要加backgroun

    代码: <div> <span style="display:block;width:40px;height:20px;border:1px solid red;posit ...

  8. BZOJ.3293.[CQOI2011]分金币(思路)

    3293 双倍经验 1045 先考虑能否断环为链.显然是可以的,因为金币不可能在整个环上平移.所以我们枚举断点\(k\),表示\(k\)和\(k+1\)之间不交换金币. 令\(d_i=a_i-aver ...

  9. Spring使用笔记(三) 高级装配

    高级装配 一.环境与Profile 一)配置profile bean 环境的改变导致配置改变(需求:通过环境决定使用哪个bean),可以通过Spring的Profile解决. Profile可以在程序 ...

  10. Ubuntu安装python3虚拟环境

    大多数Linux自带python2.7,而Ubuntu1.6也自带python3.x,本文章主要记录virtualenv+vitualenvwrapper使用python3虚拟环境 虚拟环境好处不多说 ...