java爬虫,并保存为json文件

一、找到对应的实际网址

1、网址

url = "https://developer.dji.com/cloud-api-tutorial/cn/error-code.html“

2、需要爬取的内容

3、网页源码

发现是一个个的js文件,所以需要找到对应内容的js

4、找到对应的js源码

查找到的js地址为:

url = "https://developer.dji.com/doc/cloud-api-tutorial/assets/js/v-428b229c.d8ba2fb4.js";

二、使用java代码进行爬取

public static void main(String[] args) {
        Map<Integer, String> errorMap = new HashMap<>();
        String url = "https://developer.dji.com/doc/cloud-api-tutorial/assets/js/v-428b229c.d8ba2fb4.js";
        try {
            // 加载 JavaScript 文件内容,忽略内容类型
            Document doc = Jsoup.connect(url).ignoreContentType(true).get();

            // 找到包含 <tbody> 的节点,需要打断点,进行遍历找
            Node node = doc.childNodes().get(0).childNodes().get(1).childNodes().get(3).childNodes().get(1);

            if (node instanceof Element) {
                Element tbody = (Element) node;

                // 获取所有的 <tr> 元素
                Elements rows = tbody.select("tr");

                // 遍历每一行,提取错误码和错误描述
                for (Element row : rows) {
                    // 获取当前行中的所有单元格
                    Elements cells = row.select("td");
                    if (cells.size() >= 2) {
                        Integer errorCode = Integer.parseInt(cells.get(0).text()); // 第一个单元格是错误码
                        String errorDescription = cells.get(1).text(); // 第二个单元格是错误描述
                        errorMap.put(errorCode,errorDescription);
                    }
                }
            }
        } catch (IOException | java.io.IOException e) {
            e.printStackTrace();
        }

        // 将错误码和错误描述转换为 JSON 格式并保存到文件
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        try (FileWriter writer = new FileWriter("D:\\error_codes.json")) {
            gson.toJson(errorMap, writer);
            System.out.println("JSON 文件保存成功: " + "D:\\error_codes.json");
        } catch (IOException | java.io.IOException e) {
            e.printStackTrace();
        }

        // 与旧的错误码与描述信息作比较并保存
        saveCompareResultToJsonFile(errorMap, "D:\\error_codes_diff.json");
    }

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值