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

使用JSoup从网站源码提取JavaScript代码的技术问询及示例数据

使用JSoup提取网页中的Schema结构化JavaScript数据

嘿,我来帮你搞定用JSoup提取这段Schema产品数据的事儿!其实步骤很清晰,咱们一步步来:

1. 用JSoup定位目标script标签

首先,你得先获取网页的HTML文档,然后找到包含Schema Product数据的那个<script>标签。如果网页里的这个script标签有type="application/ld+json"属性(大部分正规网站都会加),那直接用选择器就能精准定位;如果没有,就通过内容里的特征(比如包含"@type": "Product")来筛选。

示例代码:

// 导入必要的JSoup包
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

// 假设你已经拿到了网页的HTML源码(或者直接从URL加载)
String html = "你的网页源码字符串";
Document doc = Jsoup.parse(html);

// 优先通过type属性定位,更准确
Element schemaScript = doc.selectFirst("script[type='application/ld+json']");

// 如果没有type属性,就遍历所有script找包含Product特征的
if (schemaScript == null) {
    for (Element script : doc.select("script")) {
        String content = script.html();
        if (content.contains("\"@type\": \"Product\"")) {
            schemaScript = script;
            break;
        }
    }
}

2. 提取内容并解析成JSON

找到目标script后,把里面的文本内容取出来,因为这是JSON-LD格式的结构化数据,咱们需要用JSON解析库(比如Java自带的org.json或者Gson)来解析它,这样就能轻松提取需要的字段了。

示例代码:

import org.json.JSONObject;
import org.json.JSONException;

if (schemaScript != null) {
    String rawJsonContent = schemaScript.html();
    
    // 处理可能的格式问题(比如你提供的内容开头多了个引号,先清理)
    rawJsonContent = rawJsonContent.replaceFirst("^\"", "");
    
    try {
        // 把字符串转成JSON对象
        JSONObject productObj = new JSONObject(rawJsonContent);
        
        // 提取你需要的字段
        String productName = productObj.getString("name");
        String description = productObj.getString("description");
        JSONObject offers = productObj.getJSONObject("offers");
        String price = offers.getString("price");
        String currency = offers.getString("priceCurrency");
        
        // 打印看看结果
        System.out.println("产品名称:" + productName);
        System.out.println("售价:" + price + " " + currency);
        System.out.println("产品描述:" + description);
    } catch (JSONException e) {
        // 处理JSON解析错误(比如内容截断、格式不合法)
        e.printStackTrace();
        System.out.println("JSON格式有问题,可能需要先修复内容");
    }
} else {
    System.out.println("没找到包含Product Schema的script标签");
}

一些小提示

  • 如果网页里的JSON内容有转义字符(比如\"),JSoup提取的时候会保留原始文本,JSON解析库能正常处理这类转义。
  • 你提供的示例内容最后是截断的("GeoCoord..."),实际解析时得确保拿到完整的JSON字符串,否则会抛出解析异常,遇到这种情况可以先检查内容是否完整,或者用轻量的JSON修复工具预处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:34:33