You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将HTML Div转换为Java/JSON对象?能否通过代码读取整站HTML并转换为Java/JSON对象以提取指定Div文本?是否可使用编组器实现?

当然可以!咱们一步步拆解你的问题,给你实用的解决方案:

1. 读取网站完整HTML并提取特定Div文本

在Java生态里,Jsoup是处理HTML解析和爬虫的首选工具,它能轻松获取网站的完整HTML,还能精准定位特定标签。

步骤:

  • 首先引入Jsoup依赖(Maven为例):
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.17.2</version> <!-- 建议使用最新稳定版 -->
</dependency>
  • 编写代码获取HTML并提取Div文本:
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 HtmlParser {
    public static void main(String[] args) {
        try {
            // 1. 获取目标网站的完整HTML内容
            Document doc = Jsoup.connect("https://你的目标网站地址").get();
            String fullHtml = doc.html();
            System.out.println("完整HTML:\n" + fullHtml);

            // 2. 提取特定Div的文本:比如按class选择(.target-div),或按id选择(#target-id)
            Elements targetDivs = doc.select("div.target-div");
            for (Element div : targetDivs) {
                // 获取Div内的所有文本(自动去除标签)
                String divText = div.text();
                // 如果需要保留标签内的HTML结构,用div.html()
                System.out.println("提取到的Div文本:\n" + divText);
            }
        } catch (IOException e) {
            e.printStackTrace();
            System.err.println("请求网站失败,请检查地址或网络");
        }
    }
}
2. 将HTML Div转换为Java/JSON对象

要把Div的内容映射为Java对象,需要先提取Div内的结构化数据,再手动或通过工具转换为对象,最后转JSON。

示例:假设你的Div结构固定

比如目标Div是:

<div class="product-card">
    <h3 class="product-name">Java编程思想</h3>
    <p class="price">99元</p>
    <span class="stock">有货</span>
</div>

第一步:创建对应的Java类

public class Product {
    private String name;
    private String price;
    private String stock;

    // 无参构造(序列化工具需要)
    public Product() {}

    // 带参构造
    public Product(String name, String price, String stock) {
        this.name = name;
        this.price = price;
        this.stock = stock;
    }

    // Getter和Setter方法,自行补充
}

第二步:提取数据并转换为Java对象,再转JSON

用Jackson(Java转JSON的常用库):

  • 先引入Jackson依赖:
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
  • 代码实现:
import com.fasterxml.jackson.databind.ObjectMapper;

// ... 继续上面的代码
Elements productDivs = doc.select("div.product-card");
ObjectMapper objectMapper = new ObjectMapper();

for (Element div : productDivs) {
    String name = div.select("h3.product-name").text();
    String price = div.select("p.price").text();
    String stock = div.select("span.stock").text();

    // 转换为Java对象
    Product product = new Product(name, price, stock);
    
    // 转换为JSON字符串
    String jsonProduct = objectMapper.writeValueAsString(product);
    System.out.println("转换后的JSON:\n" + jsonProduct);
}
3. 关于编组器(Marshaller)的使用

Marshaller的核心作用是将Java对象序列化为XML/JSON(反过来是Unmarshaller,用于反序列化),它不能直接处理HTML。但你可以结合前面的HTML解析步骤来使用:

  1. 先用Jsoup提取Div的结构化数据,转换为Java对象;
  2. 再用Marshaller把Java对象序列化为XML或JSON。

比如用JAXB的Marshaller转XML:

  • 给Product类添加JAXB注解:
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "product")
public class Product {
    // ... 原有属性、构造方法、Getter/Setter
}
  • 使用Marshaller的代码:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

// ... 在循环里创建Product对象后
JAXBContext context = JAXBContext.newInstance(Product.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化输出

// 把对象序列化为XML并打印
marshaller.marshal(product, System.out);
总结
  • 读取HTML和提取Div文本:用Jsoup最便捷;
  • Div转Java/JSON:先提取结构化数据映射为Java对象,再用Jackson/Gson转JSON;
  • Marshaller:用于Java对象转XML/JSON,不能直接解析HTML,需配合解析工具使用。

内容的提问来源于stack exchange,提问作者SpringBootDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:52:44