入门指南:学习如何使用 Jsoup 解析 HTML

本文介绍了如何使用Java库Jsoup解析HTML,包括安装配置、基本示例(如获取标题和段落)以及在实际应用中的示例,如从网页提取超链接。Jsoup为HTML处理提供强大且易于使用的API。
摘要由CSDN通过智能技术生成

入门指南:学习如何使用 Jsoup 解析 HTML

介绍

在现代 Web 开发中,处理 HTML 是一项常见而重要的任务。无论是构建 Web 应用程序还是执行数据挖掘,解析 HTML 都是一个必不可少的环节。而 Jsoup 则是一个强大的 Java 库,专门用于解析、提取和操作 HTML 文档。本文将介绍如何使用 Jsoup 来轻松地处理 HTML。

什么是 Jsoup?

Jsoup 是一个 Java HTML 解析器,可用于解析、提取和操作 HTML 文档。它提供了简单易用的 API,使得解析 HTML 变得非常容易。无论是从 URL 加载网页、解析文件还是处理字符串,Jsoup 都能胜任。

安装和配置

要开始使用 Jsoup,首先需要将 Jsoup 添加到你的 Java 项目中。你可以通过 Maven 或者手动下载 Jsoup JAR 文件,并将其添加到项目的类路径中。以下是 Maven 依赖配置(可以根据需要自行选择最新版本):

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.17.2</version>
</dependency>

解析 HTML

使用 Jsoup 解析 HTML 非常简单。以下是一个基本示例,演示了如何解析 HTML 字符串,并获取页面标题和段落内容:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class HtmlParser {
    public static void main(String[] args) throws Exception {
        // 解析 HTML 字符串
        String html = "<html><head><title>Jsoup Example</title></head>"
                    + "<body><div id='content'><h1>Hello, Jsoup!</h1><p>This is a paragraph.	</p></div>"
                    + "<div class='container'><p class='important'>Important paragraph</p></div></body></html>";
        Document doc = Jsoup.parse(html,"UTF-8");
        
        // 获取页面标题
        String title = doc.title();
        System.out.println("Title: " + title);
        
        // 获取页面内容
        Elements paragraphs = doc.select("p");
        for (Element paragraph : paragraphs) {
            System.out.println("Paragraph: " + paragraph.text());
        }

		// 使用选择器选择元素并获取内容
        Element contentDiv = doc.selectFirst("#content");
        String header = contentDiv.selectFirst("h1").text();
        String paragraph = contentDiv.selectFirst("p").text();
		// 输出内容
        System.out.println("Header: " + header);
        System.out.println("Paragraph: " + paragraph);
        
        // 使用 CSS 选择器选择元素
        Elements importantParagraphs = doc.select(".important");
        System.out.println("Important Paragraphs:");
        for (Element importantParagraph : importantParagraphs) {
            System.out.println("Text: " + importantParagraph.text());
            System.out.println("Outer HTML: " + importantParagraph.outerHtml());
        }
        //查询文档内class以container开头的div标签
		Elements divContainers = doc.select("div[class^=container]");
		//查询文档内的内容为空的div标签,并且移除,remove会将该标签以及标签内的子标签全部移除,unwrap则只会移除该标签而不删除内部的子标签
		Elements emptyDivs = doc.select("div:empty");
		for (Element div : emptySpans) {
            div.remove();
			//div.unwrap();
        }
		
    }
}

结果

Title: Jsoup Example
Header: Hello, Jsoup!
Paragraph: This is a paragraph.
Important Paragraphs:
Text: Important paragraph
Outer HTML: <p class="important">Important paragraph</p>

在这个示例中,我们使用 Jsoup 解析了一个简单的 HTML 字符串,并提取了页面的标题和段落内容。当然Jsoup还有其他非常丰富的用法,可以满足我们对xml类型的文档的各类操作,这里就不挨个举例了。

示例应用

Jsoup 不仅可以用于解析静态 HTML 页面,还可以用于构建 Web 爬虫、提取网页内容等实际应用。以下是一个简单的示例应用,展示了如何从网页中提取超链接:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;

public class WebCrawler {
    public static void main(String[] args) throws IOException {
        // 从 URL 加载网页
        String url = "https://www.example.com";
        Document doc = Jsoup.connect(url).get();
        
        // 提取超链接
        Elements links = doc.select("a[href]");
        for (Element link : links) {
            System.out.println("Link: " + link.attr("href"));
        }
    }
}

这个示例展示了如何使用 Jsoup 构建一个简单的 Web 爬虫,从网页中提取所有超链接。

结论

通过本文的介绍,我们学习了如何使用 Jsoup 解析 HTML,并从中提取所需的数据。Jsoup 提供了强大而简洁的 API,使得 HTML 解析变得非常容易。无论是构建 Web 爬虫,还是从网页中提取数据,Jsoup 都是一个强大而可靠的工具。

希望本文能帮助你更好地理解和使用 Jsoup!


再见。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值