it编程 > 编程语言 > Java

Java利用Jsoup解析和操作HTML的技术指南

2人参与 2025-03-10 Java

1、简述

在现代 java 开发中,处理 html 数据是一项常见需求,无论是抓取网页数据、解析 html 文档,还是操作 dom 树,jsoup 都是一个强大的工具。它是一个基于 java 的 html 解析库,支持从 url、文件或字符串中解析 html,提供类似于 jquery 的 api,便于选择和操作 dom 元素。

本文将介绍 jsoup 的基本功能,并通过多个详细的代码示例展示如何使用它解析和操作 html。

2、为什么选择 jsoup?

在使用 jsoup之前,需要添加其依赖。以下是 jsoup 的 maven 依赖:

<dependency>
    <groupid>org.jsoup</groupid>
    <artifactid>jsoup</artifactid>
    <version>1.15.4</version>
</dependency>

3、基本使用方法

spring boot 集成 jsoup,以下示例将演示如何使用 jsoup 解析 html 文件和操作 dom。

3.1 从 url 抓取网页内容

import org.jsoup.jsoup;
import org.jsoup.nodes.document;

public class jsoupfromurl {
    public static void main(string[] args) {
        try {
            // 从 url 抓取网页内容
            document document = jsoup.connect("https://lsk-ww.cn").get();
            
            // 输出网页标题
            system.out.println("title: " + document.title());
            
            // 输出网页的第一段文字
            system.out.println("first paragraph: " + document.select("p").first().text());
        } catch (exception e) {
            e.printstacktrace();
        }
    }
}

3.2 从字符串解析 html

import org.jsoup.jsoup;
import org.jsoup.nodes.document;

public class jsoupfromstring {
    public static void main(string[] args) {
        string html = "<html><head><title>jsoup example</title></head>" +
                      "<body><p>hello, jsoup!</p></body></html>";

        // 解析 html 字符串
        document document = jsoup.parse(html);

        // 输出标题和段落内容
        system.out.println("title: " + document.title());
        system.out.println("body text: " + document.body().text());
    }
}

3.3 使用 css 选择器提取内容

import org.jsoup.jsoup;
import org.jsoup.nodes.document;
import org.jsoup.select.elements;

public class jsoupcssselector {
    public static void main(string[] args) {
        string html = "<html><body>" +
                      "<div class='content'><h1>header</h1><p>paragraph 1</p></div>" +
                      "<div class='footer'><p>footer paragraph</p></div>" +
                      "</body></html>";

        // 解析 html
        document document = jsoup.parse(html);

        // 使用 css 选择器提取内容
        elements content = document.select(".content h1");
        system.out.println("header: " + content.text());

        elements footer = document.select(".footer p");
        system.out.println("footer: " + footer.text());
    }
}

3.4 修改 html 内容

import org.jsoup.jsoup;
import org.jsoup.nodes.document;

public class jsoupmodifyhtml {
    public static void main(string[] args) {
        string html = "<html><body><p>original paragraph</p></body></html>";

        // 解析 html
        document document = jsoup.parse(html);

        // 修改段落内容
        document.select("p").first().text("updated paragraph");

        // 输出修改后的 html
        system.out.println(document.html());
    }
}

3.5 提取网页中的链接和图片

import org.jsoup.jsoup;
import org.jsoup.nodes.document;
import org.jsoup.nodes.element;
import org.jsoup.select.elements;

public class jsoupextractlinks {
    public static void main(string[] args) {
        string html = "<html><body>" +
                      "<a href='https://example.com'>example</a>" +
                      "<img src='image.jpg' alt='example image'>" +
                      "</body></html>";

        // 解析 html
        document document = jsoup.parse(html);

        // 提取链接
        elements links = document.select("a[href]");
        for (element link : links) {
            system.out.println("link: " + link.attr("href") + " text: " + link.text());
        }

        // 提取图片
        elements images = document.select("img[src]");
        for (element image : images) {
            system.out.println("image: " + image.attr("src") + " alt: " + image.attr("alt"));
        }
    }
}

3.6 处理表单数据

import org.jsoup.connection;
import org.jsoup.jsoup;
import org.jsoup.nodes.document;

public class jsoupformexample {
    public static void main(string[] args) {
        try {
            // 提交表单
            connection.response response = jsoup.connect("https://example.com/login")
                    .data("username", "user123")
                    .data("password", "pass123")
                    .method(connection.method.post)
                    .execute();

            // 获取响应的 html
            document document = response.parse();
            system.out.println("response: " + document.body().text());
        } catch (exception e) {
            e.printstacktrace();
        }
    }
}

4、使用场景

5、总结

jsoup 是处理 html 的强大工具,具备快速抓取、解析和操作 html 的能力,适合多种应用场景。

常见的优点:

常见的缺点:

以上就是java利用jsoup解析和操作html的技术指南的详细内容,更多关于java jsoup解析和操作html的资料请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

SpringBoot自定义注解如何解决公共字段填充问题

03-10

使用EasyPOI实现多sheet动态列导出

03-10

SpringBoot如何使用redis

03-10

Java实现FIFO功能的完整代码实践

03-10

对象存储服务MinIO快速入门(集成项目的详细过程)

03-10

Java格式化小数并保留两位小数的四种方法

03-10

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论