Java 递归爬取国家统计局地区 <tr><td> 信息:附完整代码与实现解析
以下是一个递归爬取国家统计局地区信息的 Java 实现例子: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { String url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/"; List<AreaInfo> areaList = getAreaInfo(url, ""); for (AreaInfo area : areaList) { System.out.println(area); } } public static List<AreaInfo> getAreaInfo(String url, String parentCode) { List<AreaInfo> areaList = new ArrayList<>(); try { Document doc = Jsoup.connect(url).get(); Elements trElements = doc.select("tr[class='citytr']"); for (Element trElem : trElements) { String code = trElem.child(0).text(); String name = trElem.child(1).text(); String link = trElem.select("a").attr("href"); AreaInfo area = new AreaInfo(code, name, parentCode); areaList.add(area); if (!link.isEmpty()) { String childUrl = url + link; List<AreaInfo> childList = getAreaInfo(childUrl, code); areaList.addAll(childList); } } } catch (IOException e) { e.printStackTrace(); } return areaList; } public static class AreaInfo { private String code; private String name; private String parentCode; public AreaInfo(String code, String name, String parentCode) { this.code = code; this.name = name; this.parentCode = parentCode; } @Override public String toString() { return "AreaInfo{" + "code='" + code + '\'' + ", name='" + name + '\'' + ", parentCode='" + parentCode + '\'' + '}'; } } } ``` 上述代码使用 Jsoup 库来解析 HTML 页面,并实现了一个递归函数 `getAreaInfo` 来爬取区域信息。在 `getAreaInfo` 函数中,首先通过提供的 URL 获取页面内容,然后使用 Jsoup 的选择器语法来定位地区信息所在的 `<tr>` 元素,解析其中的区域代码、名称和链接。然后,将这些信息构造成一个 `AreaInfo` 对象,并添加到结果列表中。如果该地区还有子地区,就递归调用 `getAreaInfo` 函数来获取子地区信息,并将其添加到结果列表中。 上面的例子爬取的是国家统计局地区信息的示例网站(http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/),你可以根据自己的需求修改 URL 和解析的元素选择器来适应其他网站的结构。 ######[AI写代码神器 | 1006点数解答 | 2024-05-20 14:15:53]
- 税务发票 HTML 代码优化:从基础到进阶的全方位指南(字节豆包 | 906点数解答 | 2025-07-14 12:32:02)181
- HTML 故障诊断表代码审查:优化建议与逻辑要点揭秘(字节豆包 | 706点数解答 | 2025-07-03 09:05:13)150
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)406
- Java 递归爬取国家统计局地区 <tr><td> 信息:附完整代码与实现解析( | 1006点数解答 | 2024-05-20 14:15:53)268
- HTML 三行表格样式代码解析及开发注意要点(字节豆包 | 75点数解答 | 2025-03-13 23:16:59)255
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)305
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1134
- 用 Java+Jsoup 轻松扒取网站 <tr><td> 内容,附代码及注意事项 (阿里通义 | 413点数解答 | 2024-05-20 10:47:05)226
- Java实战:利用网络爬虫技术抓取网站 <tr><td> 内容全攻略( | 587点数解答 | 2024-05-20 10:59:04)221
- Java:抽象类 Vehicle 及子类 Car、MotorBike 实战演示(讯飞星火 | 440点数解答 | 2024-06-06 23:18:54)310
- 用 Pandas 深度剖析数据:从读取到统计分析全流程实战(GPT | 642点数解答 | 2024-06-30 15:39:49)355
- 用 Pandas 深入分析招聘数据:从数据读取到可视化全流程解析(GPT | 1539点数解答 | 2024-06-30 15:56:50)367