jsoup是一个用于解析、提取、操作HTML的开源Java函式库。在我眼里就是一个java版本的jquery,非常强大!!!
jsoup在2009年由亚马逊软件开发经理Jonathan Hedley所编写。他在MIT许可(类似知识共享授权条款的宽松自由软件授权条款)下发布的。
Hedley编写jsoup的用意在于“处理所有种类的HTML。从原始和验证,到无效标签汤。
mvn依赖
最新版本在这里找:https://mvnrepository.com/artifact/org.jsoup/jsoup
当前的最新版本是
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
Jsoup解析方法
Jsoup支持四种方式解析Document,即可以输入四种内容得到一个Document:
- 解析字符串
- 解析body片段
- 从一个URL解析
- 从一个文件解析
本节转载自:- https://www.cnblogs.com/youyoui/p/11065923.html
字符串解析示例
字符串中必须包含head和body元素。
String html = "<html><head><title>First parse</title></head>"
+ "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
HTML片段解析
String html = "<div><p>Lorem ipsum.</p>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
从URL解析
Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();
还可以携带cookie等参数:
Document doc = Jsoup.connect("http://example.com")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
从文件解析
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
实战
全部API我就不列出来了,可以到 https://jsoup.org/查阅。我只列出我常用的。
大多数的写法与jquery类似,根据IDEA的智能提示就可以直接按jquery的写法处理了。
找出class="ewb-info-item2"
所有元素
Document document = Jsoup.parse(htmlSource);
Elements lis = document.getElementsByClass("ewb-info-item2");
System.out.println(lis);
获取所有子div
Elements divs = li.getElementsByTag("div");