📜  jsoup-使用DOM方法(1)

📅  最后修改于: 2023-12-03 15:17:05.069000             🧑  作者: Mango

Jsoup-使用DOM方法

介绍

Jsoup是一个Java库,用于解析HTML文档、从中提取数据以及操作HTML元素。它提供了一组简单而强大的API,通过类似于CSS选择器的语法来操作HTML dom。

在本文中,我们将深入介绍如何使用Jsoup的DOM方法来解析HTML文档、选择元素、提取数据以及修改HTML元素。

依赖

要使用Jsoup,首先需要将其添加为项目的依赖项。可以通过Maven或者直接下载Jar文件来完成。

Maven依赖:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.3</version>
</dependency>
解析HTML文档

首先,我们需要将HTML文档加载到Jsoup中,以便后续的操作。可以通过不同的方式来解析HTML文档,例如从URL、字符串、文件或输入流中加载。

从URL加载
Document doc = Jsoup.connect("https://example.com").get();
从字符串加载
String html = "<html><head><title>Example</title></head><body><h1>Hello, World!</h1></body></html>";
Document doc = Jsoup.parse(html);
从文件加载
File input = new File("path/to/file.html");
Document doc = Jsoup.parse(input, "UTF-8");
从输入流加载
InputStream input = new FileInputStream("path/to/file.html");
Document doc = Jsoup.parse(input, "UTF-8", "https://example.com");
选择元素

一旦将HTML文档加载到Jsoup中,我们可以使用DOM方法选择元素。使用的语法类似于CSS选择器。

通过标签名选择元素
Elements elements = doc.select("div");
通过类名选择元素
Elements elements = doc.select(".className");
通过ID选择元素
Elements elements = doc.select("#idName");
通过属性选择元素
Elements elements = doc.select("[attrName=attrValue]");
通过子元素选择元素
Elements elements = doc.select("parent > child");
通过多个选择器选择元素
Elements elements = doc.select("selector1, selector2, selector3");
提取数据

一旦选择了所需的元素,我们可以使用DOM方法提取数据或者修改元素的属性和内容。

提取属性值
Element element = doc.select("a").first();
String href = element.attr("href");
提取文本内容
Element element = doc.select("h1").first();
String text = element.text();
提取HTML内容
Element element = doc.select("div").first();
String html = element.html();
修改属性值
Element element = doc.select("a").first();
element.attr("href", "https://newlink.com");
修改文本内容
Element element = doc.select("h1").first();
element.text("New Heading");
修改HTML内容
Element element = doc.select("div").first();
element.html("<span>New Content</span>");
遍历元素

如果我们需要遍历选中的元素集合,可以使用迭代器或者for-each循环。

使用迭代器
Elements elements = doc.select("div");
Iterator<Element> iterator = elements.iterator();

while (iterator.hasNext()) {
    Element element = iterator.next();
    // 对元素进行操作
}
使用for-each循环
Elements elements = doc.select("div");

for (Element element : elements) {
    // 对元素进行操作
}
总结

使用Jsoup的DOM方法,我们可以方便地解析HTML文档、选择元素、提取数据以及修改HTML元素。这使得在Java程序中处理HTML变得简单而高效。以上只是Jsoup提供的功能的一部分,你还可以了解更多高级用法,如爬虫和表单提交等。

请查阅Jsoup官方文档以获取更多信息和示例代码。