Jsoup 是一个 Java 库,用于从 HTML(包括从 Web 服务器检索的 HTML)中解析数据,并使用 DOM、CSS 和类似于 jQuery 的方法进行操作。它提供了一种非常方便的方式来提取和操作数据,从单个的 HTML 文件到整个网站的数据。
XML解析即读写XML文档中的数据。框架的开发者通过XML解析读取框架使用者配置的参数信息,开发者也可以通过XML解析读取网络传来的数据。XML有如下解析思想:
将标记语言文档一次性加载进内存,在内存中形成一颗dom树
· 优点:操作方便,可以对文档进行CRUD的所有操作
· 缺点:占内存
逐行读取,基于事件驱动的。
· 优点:不占内存,一般用于手机APP开发中读取XML
· 缺点:只能读取,不能增删改
· JAXP:SUN公司提供的解析器,支持DOM和SAX两种思想
· DOM4J:一款非常优秀的解析器
· Jsoup:Jsoup是一款Java的HTML解析器,支持DOM思想。可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过CSS以及类似于jQuery的操作方法来取出和操作数据
· PULL:Android操作系统内置的解析器,支持SAX思想
步骤:
首先这里准备一个student.xml文件。
<?xml version="1.0" encoding="UTF-8" ?>
<body>
<name>zhangsan</name>
<name>lisi</name>
<name>wangwu</name>
</body>
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class Demo1 {
// 获取XML中所有学生的姓名
public static void main(String[] args) throws IOException {
// 2.加载XML文档进内存。获取DOM树对象Document
// 2.1 获取类加载器
ClassLoader classLoader = Demo1.class.getClassLoader();
// 2.2使用类加载器,找到XML文档的路径
String path = classLoader.getResource("com/example/xsd/student.xml").getPath();
// 2.3加载XML文档进内存,并转成Document对象
Document document = Jsoup.parse(new File(path), "utf-8");
// 3.获取对应的标签Element对象
Elements name = document.getElementsByTag("name");
// 4.获取数据
for (Element element : name) {
String text = element.text();
System.out.println(text);
}
}
}
运行结果如下:
Jsoup:可以解析xml或html,形成dom树对象。
常用方法:
· static Document parse(File in, String charsetName):解析本地文件
· static Document parse(String html):解析html或xml字符串
· static Document parse(URL url, int timeoutMillis):解析网页源文
接下来解析本地的student.xml文件和https://blog.csdn.net/qq_53317005/article/details/133105261这篇文章
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.IOException;
import java.net.URL;
public class Demo2 {
// Jsoup
public static void main(String[] args) throws IOException {
// 解析本地XML
String path = Demo2.class.getClassLoader().getResource("com/example/xsd/student.xml").getPath();
Document document = Jsoup.parse(new File(path), "utf-8");
System.out.println(document);
System.out.println("---------------------------------");
// 解析网络资源
Document document2 = Jsoup.parse(new URL("https://blog.csdn.net/qq_53317005/article/details/133105261"), 2000);
System.out.println(document2);
}
}
运行结果如下:
Document:xml的dom树对象
常用方法:
· Element getElementById(String id):根据id获取元素
· Elements getElementsByTag(String tagName):根据标签名获取元素
· Elements getElementsByAttribute(String key):根据属性获取元素
· Elements getElementsByAttributeValue(String key,String value):根据属性名=属性值获取元素。
· Elements select(Sting cssQuery):根据选择器选取元素。
先准备一个xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<student>
<body id="body">
<name>zhangsan</name>
<age id="aa">18</age>
<sex class="sex">man</sex>
</body>
<script>
#aa {
age: 18;
}
.sex {
sex: man;
}
</script>
</student>
然后尝试通过不同的方式去解析该xml文件
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.IOException;
public class Demo3 {
// Document
public static void main(String[] args) throws IOException {
String path = Demo3.class.getClassLoader().getResource("com/example/xsd/student.xml").getPath();
Document document = Jsoup.parse(new File(path), "utf-8");
// 根据id获取元素
Element body = document.getElementById("body");
System.out.println(body);
System.out.println("----------------------");
// 根据标签获取元素
Elements name = document.getElementsByTag("name");
for (Element element : name) {
System.out.println(element);
}
System.out.println("----------------------");
// 根据属性获取元素
Elements english = document.getElementsByAttribute("id");
for (Element element : english) {
System.out.println(element);
}
System.out.println("----------------------");
// 根据属性名=属性值获取元素
Elements elementsByAttributeValue = document.getElementsByAttributeValue("id", "aa");
for (Element element : elementsByAttributeValue) {
System.out.println(element);
}
System.out.println("----------------------");
// 使用CSS选择器获取元素
Elements select = document.select("#aa");
System.out.println(select);
System.out.println("----------------------");
Elements sex = document.select("sex");
System.out.println(sex);
System.out.println("----------------------");
Elements select1 = document.select(".aa");
System.out.println(select1);
}
}
// 根据id获取元素
// 根据标签获取元素
// 根据属性获取元素
// 根据属性名=属性值获取元素
// 使用CSS选择器获取元素
可以看得到都可以成功。
总的来说,Jsoup 是一个强大的 Java 库,用于处理 HTML 文档。它提供了多种功能,包括解析 HTML、提取数据、修改文档内容、清理用户输入的 HTML,以及发送 HTTP 请求等。以下是 Jsoup 的一些主要功能:
<table>
标签中提取数据)的特定方法。Jsoup 的这些功能使其成为处理 HTML 文档的强大工具,无论是在网络爬虫、Web 应用程序还是任何需要解析和操作 HTML 的场景中都非常有用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。