当前位置: 代码网 > it编程>编程语言>Java > Java利用Jsoup解析和操作HTML的技术指南

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

2025年03月10日 Java 我要评论
1、简述在现代 java 开发中,处理 html 数据是一项常见需求,无论是抓取网页数据、解析 html 文档,还是操作 dom 树,jsoup 都是一个强大的工具。它是一个基于 java 的 htm

1、简述

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

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

2、为什么选择 jsoup?

  • 简单易用:api 设计友好,功能丰富。
  • 强大的选择器:支持 css 选择器和 dom 遍历。
  • 灵活的 html 操作:可以轻松修改 html。
  • 兼容性强:支持解析 html5 和宽松的 html。
  • 高效:可以从 url 快速抓取内容。

在使用 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、使用场景

  • web 抓取:提取网页内容,如标题、段落、链接等。
  • html 清洗:清理和格式化用户生成的 html。
  • 表单提交:模拟用户登录或提交数据。
  • dom 操作:解析和修改 html 文件。
  • 数据提取:从 html 表格中提取结构化数据。

5、总结

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

常见的优点:

  • 使用简单,学习成本低。
  • 功能强大,支持多种 html 操作。
  • 兼容性强,能处理各种 html 格式。

常见的缺点:

  • 仅支持单线程操作,抓取效率有限。
  • 对于动态加载的网页(如 ajax),需要结合其他工具使用。

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

(0)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com