Jsoup的简易使用示例

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"> <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代码
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的简易使用示例的更多相关文章
- 【前端】ACE Editor 简易使用示例
身为一个早已退役的Oier,当然忘不了当年一个个OJ页面上的代码显示和代码编辑器. 其中,洛谷使用的ACE Editor就是之一,非常的简洁美观.以及实际上在前端页面上搭建一个ACE Editor也是 ...
- 【前端】ACE Editor(代码编辑器) 简易使用示例
身为一个早已退役的Oier,当然忘不了当年一个个OJ页面上的代码显示和代码编辑器. 其中,洛谷使用的ACE Editor就是之一,非常的简洁美观.以及实际上在前端页面上搭建一个ACE Editor也是 ...
- C# 网络编程之简易聊天示例
还记得刚刚开始接触编程开发时,傻傻的将网站开发和网络编程混为一谈,常常因分不清楚而引为笑柄.后来勉强分清楚,又因为各种各样的协议端口之类的名词而倍感神秘,所以为了揭开网络编程的神秘面纱,本文尝试以一个 ...
- 【前端】wangEditor(富文本编辑器) 简易使用示例
转载请说明作者或者注明出处,谢谢 说到前端常用的编辑器,自然也少不了富文本编辑器(RichText Editor) 笔者在此之前也看了一些相关的在线编辑器,其中包括了当百度搜索“富文本编辑器”字样时出 ...
- 0048 MyBatis动态SQL简易入门示例
假如有如下的关于书籍基本信息的表: DROP DATABASE IF EXISTS `books`; CREATE DATABASE `books`; USE books; DROP TABLE IF ...
- Couchbase之个人描述及入门示例
本文不打算抄袭官方或者引用他人对Couchbase的各种描述,仅仅是自己对它的一点理解(错误之处,敬请指出),并附上一个入门示例. ASP.NET Web项目(其他web开发平台也一样)应用规模小的时 ...
- jsoup Cookbook(中文版)--爬虫(java)
转载:http://www.open-open.com/jsoup/ 目录: 入门 解析和遍历一个html文档 输入 解析一个html字符串 解析一个body片断 根据一个url加载Document对 ...
- Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证
本文通过一个简易安全认证示例的开发实践,理解过滤器和拦截器的工作原理. 很多文章都将过滤器(Filter).拦截器(Interceptor)和监听器(Listener)这三者和Spring关联起来讲解 ...
- jsoup Cookbook(中文版)-Jsoup解析HTML
jsoup Cookbook(中文版) 入门 1. 解析和遍历一个html文档 如何解析一个HTML文档: String html = "<html><head& ...
随机推荐
- IIS:另一个程序正在使用此文件进程无法访问。
启动网站时,遇到这个错误,一般是端口已经被占用,更换一个空闲端口即可. 通过以下命令可查询 根据最后一列的数字在任务管理器中可查看被哪个程序占用了
- Python学习(六) —— 函数
一.函数的定义和调用 为什么要用函数:例如,计算一个数据的长度,可以用一段代码实现,每次需要计算数据的长度都可以用这段代码,如果是一段代码,可读性差,重复代码多: 但是如果把这段代码封装成一个函数,用 ...
- IDEA链接mySql问题 : You have an error in your SQL syntax : 'OPTION SQL_SELECT_LIMIT=1000' (or 'OPTION SQL_SELECT_LIMIT=DEFAULT')
IDEA控制台错误信息: check the manual that corresponds to your MySQL server version for the right Code: 1064 ...
- 【python】进程与线程
No1: 多进程 from multiprocessing import Process import os # 子进程要执行的代码 def run_proc(name): print('Run ch ...
- HDU 2196 Computer (树上最长路)【树形DP】
<题目链接> 题目大意: 输出树上每个点到其它点的最大距离. 解题分析: 下面的做法是将树看成有向图的做法,计算最长路需要考虑几种情况. dp[i][0] : 表示以i为根的子树中的结点与 ...
- CDN拾遗
作为前端er,辛辛苦苦搬完砖,好不容易上线之后,正准备告一声万事大吉,回家吃鸡.忽然qa/pm/老板问,为什么我这里还是没有更新?只能是弱弱的回一声,清个缓存看看?或者还有那么一天,发现大部分区域都是 ...
- c++简单学习
在c++中我们很容易遇到字符串的分割处理问题,这种问题通常比较容易,但由于我比较菜,花费了一定时间去思考一个和字符串相关的题,该题的大概思路是利用取模运算后,将得到的单个字符进行分析,主要考察到了字符 ...
- .NET Framework 4 与.NET Framework 4 Client Profile有什么区别?
.net framework 自从 2002 年发展至今,已经历了好几个版本,1.0, 1.1, 2.0, 3.0, 3.5 等不同的版本更替,.net framework 的Redistributa ...
- Topcoder的使用方法
http://acmicpc.info/archives/164?tdsourcetag=s_pctim_aiomsg(大家都推荐的一个指南, 但我觉得不好用) https://www.jianshu ...
- 校园网使用IPV6 tunnel免流量上网
前段时间购买了一个vps,做梯子感觉不错,但是在校园网内,vps流量远超10块钱校园流量,眼看着上个月vps的流量被清零.但是校园网有免费的IPV6,而我的VPS也有个IPV6的地址,于是乎就想着如何 ...