Jsoup是HTML解析器,可直接解析某个URL地址,HTML文本内容。
Jsoup的主要功能如下:
- 从一个URL,文件或者字符串中解析HTML
- 使用DOM火星和CSS选择器来查找,取出数据
- 可操作HTML元素、属性、文本
使用
- pom.xml
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
Jsoup解析Url
测试类
package Jsoup;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.junit.Test;
import org.jsoup.nodes.Document;
import java.net.URL;
public class JsoupFirstTest {
@Test
public void testUrl()throws Exception{
//解析URl地址,第一个参数是访问的URl,第二个参数是访问时的超时时间
Document doc=Jsoup.parse(new URL("http://www.itcast.cn"),1000);
//使用标签选择器,获取title标签中的内容
String title=doc.getElementsByTag("title").first().text();
//打印
System.out.println(title);
}
}
Jsoup解析字符串
@Test
public void testString() throws Exception{
//使用工具类读取文件,获取字符串
String content=FileUtils.readFileToString(new File("文本路径"));
//解析字符串
Document doc=Jsoup.parse(content);
String title=doc.getElementsByTag("title").first().text();
System.out.println();
}
Jsoup解析文件
@Test
public void testFile() throws Exception{
//解析文件
Document doc= Jsoup.parse(new File("文件地址"),"utf8");
String title=doc.getElementsByTag("title").first().text();
System.out.println(title);
}
使用Dom方式遍历文档
/*
1、通过Id查询元素getElementById
2、通过标签获取元素getElementByTag
3、通过class获取元素getElementByClass
4、通过属性获取元素getElementByAttribute
*/
@Test
public void testDOM() throws Exception{
//解析文件,获取Document对象
Document doc= Jsoup.parse(new File("文件地址"),"utf8");
//获取元素
Element element=doc.getElementById("");
System.out.println("获取到的内容是"+element.text());
}
获取元素中的数据
@Test
public void testData() throws Exception{
//解析文件,获取Document对象
Document doc= Jsoup.parse(new File("文件地址"),"utf8");
//获取元素
Element element=doc.getElementById("");
String str=null;
//1、从元素中获取ID
str=element.id();
//2、从元素中获取className
str=element.className();
/*Set<String> classSet=element.classNames();
for(String s:classSet){
System.out.println(s);
}*/
//3、从元素中获取属性sttr
str=element.attr("id");
//4、从元素中获取所有属性attributes
Attributes attribute=element.attributes();
System.out.println(attribute.toString());
//5、从元素中获取文本内容
str=element.text();
System.out.println("获取到的内容是"+str);
}
使用选择器获取元素
@Test
public void testSelector() throws Exception{
//解析文件,获取Document对象
Document doc= Jsoup.parse(new File("文件地址"),"utf8");
//获取元素
Elements elements=doc.select("span");
for (Element element : elements) {
System.out.println(element);
}
}