当前文章收录状态:
查询中...
jsoup 介绍
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
1,准备环境,导入所需依赖
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
2,获取网页第一个title标签的文本内容
// 解析Url地址 参数1:访问的url,参数2:访问的超时时间
Document doc = Jsoup.parse(new URL("http://www.myqxin.com"), 1000);
// 使用选择器,获取想要的内容
String title = doc.getElementsByTag("title").first().text();
System.out.println(title);
虽然使用Jsoup可以替代HttpClient直接发起请求解析数据,但是往往不会这样用,因为实际的开发过程中,需要使用到多线程,连接池,代理等等方式,而jsoup对这些的支持并不是很好,所以我们一般把jsoup仅仅作为Html解析工具使用
3,jsoup解析字符串文件
// 使用工具类读取文件,获取字符串
String context = FileUtils.readFileToString(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");
// 解析字符串
Document doc = Jsoup.parse(context);
// 解析文件
//Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");
String title = doc.getElementsByTag("title").first().text();
System.out.println(title);
这里的set.html内容是自己测试用的内容,仅仅是为了演示,实际情况根据你们所接触到的页面而定
4,使用dom 方式遍历文档
元素获取
- 根据id查询元素 getElementById
- 根据标签获取元素 getElementsByTag
- 根据class获取元素 getElementsByClass
- 根据属性获取元素 getElementsByAttribute
// 解析文件,获取doc对象
Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");
// 1,根据id查询元素 getElementById
Element element1 = doc.getElementById("people");
// 2,根据标签获取元素 getElementsByTag
Element element2 = doc.getElementsByTag("span").first();
// 3,根据class获取元素 getElementsByClass
Element element3 = doc.getElementsByClass("").first();
// 4,根据属性获取元素 getElementsByAttribute
Element element4 = doc.getElementsByAttribute("").last();
// 根据属性和属性值获取
Element element5 = doc.getElementsByAttributeValue("abc","123").last();
元素中的数据获取
- 从元素中获取id
- 从元素中获取className
- 从元素中获取属性的值 attr
- 从元素中获取所有属性 attributes
- 从元素中获取文本内容 text
// 解析文件,获取doc对象
Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");
// 1,根据id查询元素 getElementById
Element element = doc.getElementById("people");
// 1,从元素中获取id
String str1 = element.id();
// 2,从元素中获取className
String str2 = element.className();
// 3,从元素中获取属性的值 attr
String str3 = element.attr("id");
// 4,从元素中获取所有属性 attributes
Attributes str4 = element.attributes();
// 5,从元素中获取文本内容 text
String str5 = element.text();
5,使用选择器获取元素
selector选择器概述
- tagname:通过标签查找元素,比如:span
- #id:通过ID查找元素,比如:#myqxin
- .class:通过class名称查找元素,比如:class_a
- [attribute]:利用属性查找元素,比如:[abc]
- [attr=value]:利用属性值查询元素,比如:[class=s_name]
// 解析文件,获取doc对象
Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");
// tagname:通过标签查找元素,比如:span
Elements spans = doc.select("span");
// #id:通过ID查找元素,比如:#myqxin
Element first = doc.select("#myqxin").first();
// .class:通过class名称查找元素,比如:class_a
Element last = doc.select(".class_a").last();
// [attribute]:利用属性查找元素,比如:[abc]
Elements select = doc.select("[abc]");
// [attr=value]:利用属性值查询元素,比如:[class=s_name]
Elements elements1 = doc.select("[class=s_name]");
Elements elements2 = doc.select("[id=myqxin]");
6,select选择器组合使用
- el#id:元素+ID,比如:h3#myqxin
- 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 第一级(直接子元素)的 ul,再找所有ul 下的第一级li
- parent > * :查找某个父元素下所有直接子元素
// 解析文件,获取doc对象
Document doc = Jsoup.parse(new File("C:\\Users\\myqxin\\Desktop\\set.html"), "utf8");
// el#id:元素+ID,比如:h3#myqxin
Elements select1 = doc.select("h3#myqxin");
// el.class:元素+class,比如:li.class_a
Elements select2 = doc.select("li.class_a");
// el[attr]:元素+属性名,比如:span[abc]
Elements select3 = doc.select("span[abc]");
// 任意组合:比如:span[abc].s_name
Elements select4 = doc.select("span[abc].s_name");
// ancestor child:查找某个元素下子元素,比如:.city_con li 查询“city_con”下的所有li
Elements select5 = doc.select(".city_con li");
// parent > child:查找某个父元素下的直接子元素,比如.city_con > ul > li 查找city_con 第一级(直接子元素)的 ul,再找所有ul 下的第一级li
Elements select6 = doc.select(".city_con > ul > li");
// parent > * :查找某个父元素下所有直接子元素
Elements select7 = doc.select(".city_con > *");
© 版权声明
1
本站网络名称:
明恒博客
2
本站永久网址:
www.zym88.cn
3 本站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
暂无评论内容