问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Jsoup Example

创作时间:
作者:
@小白创作中心

Jsoup Example

引用
CSDN
1.
https://m.blog.csdn.net/lishangke/article/details/144244449

在现代Java开发中,处理HTML数据是一项常见需求,无论是抓取网页数据、解析HTML文档,还是操作DOM树,Jsoup都是一个强大的工具。它是一个基于Java的HTML解析库,支持从URL、文件或字符串中解析HTML,提供类似于jQuery的API,便于选择和操作DOM元素。本文将介绍Jsoup的基本功能,并通过多个详细的代码示例展示如何使用它解析和操作HTML。

为什么选择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.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();
        }
    }
}

使用场景

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

总结

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

常见的优点:

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

常见的缺点:

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

通过本文的介绍和示例,希望您能快速上手Jsoup并应用到实际项目中。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号