一、找到对应的实际网址
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");
}