项目html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSDN - 专业开发者社区</title>
</head>
<body>
<div class="city">
<h3 id="city_bj">北京中心</h3>
<img src="/2018czgw/images/slogan.jpg/" class="slogan" />
<div class="city_in">
<div class="city_con" style="display: none;">
<ul>
<li id="test" city="北京" class="class_a class_b">
<a href="https://www.csdn.net/" target="_blank">
<span class="s_name">北京</span>
</a>
</li>
<li>
<a href="https://www.csdn.net/" target="_blank">
<span class="s_name">上海</span>
</a>
</li>
<li>
<a href="https://www.csdn.net/" target="_blank">
<span abc="123" class="s_name">广州</span>
</a>
</li>
<ul>
<li>天津</li>
</ul>
</ul>
</div>
</div>
</div>
</body>
</html>
1. Jsoup介绍
Jsoup 是一款Java的HTML解析器, 可直接解析某个URL地址、HTML文本内容. 它提供了一套非常省力的API, 可通过DOM, CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
1.从一个URL, 文件或字符串中解析HTML;
2.使用DOM或CSS选择器来查找、取出数据;
3.可操作HTML元素、属性、文本;
2. Jsoup解析URL
加入jsoup依赖导入:
PS: 虽然使用Jsoup可以替代HttpClient直接发送请求解析数据, 但是往往不会这样用, 因为实际的开发过程中, 需要使用到多线程, 连接池, 代理等等方式, 而jsoup对这些的支持并不是很好, 所以我们一般把jsoup仅仅作为Html解析工具使用.
3. 解析字符串
4. 解析文件
5. 使用dom方式遍历文档
元素获取:
- 根据id查询元素getElementById
- 根据标签获取元素getElementsByTag
- 根据class获取元素getElementsByClass
- 根据属性获取元素getElementsByAttribute
元素中获取数据:
- 从元素中获取id
- 从元素中获取className
- 从元素中获取属性值的attr
- 从元素中获取所有属性attributes
- 从元素中获取文本内容text
6. Selector选择器概述
tagname: 通过标签查找元素, 比如: span
#id: 通过ID查找元素, 比如: #city_bj
.class: 通过class名称查找元素, 比如: class_a
[attribute]: 利用属性查找元素, 比如: [abc]
[attr=value]: 利用属性值来查找元素, 比如: [class=s_name]
7. Selector选择器组合使用
el#id: 元素+ID, 比如: h3#city_bj
el.class: 元素+class, 比如: li.class_a
el[attr]: 元素+属性名, 比如: span[abc]
任意组合: 比如: span[abc].s_name
ancestor child: 查找某个元素下子元素, 比如: .city_con li 查找"city_con"下的所有li
parent > child: 查找某个父元素下的直接子元素, 比如: .city_con > ul > li 查找 city_con 第一级(直接子元素) 的url, 再找所有ul下的第一级li
parent > : 查找某个父元素下所有直接子元素