当前位置: 首页 > article >正文

根据[国家统计局最新行政区规划]数据库代码

根据国家统计局最新行政区规划获取省市区县镇村等数据库代码

Gitee源代码地址

   public static List<Area> fetchAndStoreAreaData() throws IOException {
        List<Area> areas = new ArrayList<>();

        // Step 1: 获取省级数据
        Document provinceDoc = Jsoup.connect(BASE_URL + "index.html").get();
        Elements provinces = provinceDoc.select(".provincetr a");

        for (Element province : provinces) {
            String provinceName = province.text();
            String provinceUrl = province.attr("href");

            // 直接提取URL中的省级代码,不做复杂的substring操作
            String provinceCode = provinceUrl.replace(".html", "");

            Area provinceArea = new Area();
            provinceArea.setCode(Long.valueOf(provinceCode));
            provinceArea.setName(provinceName);
            provinceArea.setLevel(1); // 省级
            provinceArea.setPcode(0L); // 省级无父节点,设为 0
            provinceArea.setPinyin(convertToPinyin(provinceName)); // 省级无父节点,设为 0
            areas.add(provinceArea);

            // Step 2: 获取市级数据
            Document cityDoc = Jsoup.connect(BASE_URL + provinceUrl).get();
            Elements cities = cityDoc.select(".citytr");

            for (Element city : cities) {
                Elements cityElements = city.select("a");
                if (cityElements.size() < 2) {
                    continue; // 跳过异常数据
                }

                String cityCode = cityElements.get(0).text();
                String cityName = cityElements.get(1).text();
                String cityUrl = cityElements.get(0).attr("href");

                Area cityArea = new Area();
                cityArea.setCode(Long.valueOf(cityCode));
                cityArea.setName(cityName);
                cityArea.setLevel(2); // 市级
                cityArea.setPcode(Long.valueOf(provinceCode));
                cityArea.setPinyin(convertToPinyin(cityName)); /// 父级为省
                areas.add(cityArea);

                // Step 3: 获取区级数据,拼接URL
                String districtUrl = BASE_URL + cityUrl;
                try {
                    Document districtDoc = Jsoup.connect(districtUrl).get();
                    Elements districts = districtDoc.select(".countytr");

                    for (Element district : districts) {
                        Elements districtElements = district.select("a");
                        if (districtElements.size() > 0) {
                            String districtCode = districtElements.get(0).text();
                            String districtName = districtElements.get(1).text();

                            Area districtArea = new Area();
                            districtArea.setCode(Long.valueOf(districtCode));
                            districtArea.setName(districtName);
                            districtArea.setLevel(3); // 区级
                            districtArea.setPcode(Long.valueOf(cityCode));
                            districtArea.setPinyin(convertToPinyin(districtName)); // 父级为市
                            areas.add(districtArea);
                            // Step 4: 获取镇级数据
                            String townUrl = BASE_URL + districtElements.get(0).attr("href");
                            // try {
                            //     Document townDoc = Jsoup.connect(townUrl).get();
                            //     Elements towns = townDoc.select(".towntr");
                            //
                            //     for (Element town : towns) {
                            //         String townCode = town.select("a").get(0).text();
                            //         String townName = town.select("a").get(1).text();
                            //
                            //         Area townArea = new Area();
                            //         townArea.setCode(Long.valueOf(townCode));
                            //         townArea.setName(townName);
                            //         townArea.setLevel(4); // 镇级
                            //         townArea.setPcode(Long.valueOf(districtCode));
                            //         townArea.setPinyin(convertToPinyin(townName));
                            //         areas.add(townArea);
                            //
                            //         // Step 5: 获取村级数据
                            //         String villageUrl = BASE_URL + town.select("a").get(0).attr("href");
                            //         try {
                            //             Document villageDoc = Jsoup.connect(villageUrl).get();
                            //             Elements villages = villageDoc.select(".villagetr");
                            //
                            //             for (Element village : villages) {
                            //                 String villageCode = village.select("td").get(0).text();
                            //                 String villageName = village.select("td").get(2).text();
                            //
                            //                 Area villageArea = new Area();
                            //                 villageArea.setCode(Long.valueOf(villageCode));
                            //                 villageArea.setName(villageName);
                            //                 villageArea.setLevel(5); // 村级
                            //                 villageArea.setPcode(Long.valueOf(townCode));
                            //                 villageArea.setPinyin(convertToPinyin(villageName));
                            //                 areas.add(villageArea);
                            //             }
                            //         } catch (IOException e) {
                            //             System.out.println("Error fetching village data: " + e.getMessage());
                            //         }
                            //     }
                            // } catch (IOException e) {
                            //     System.out.println("Error fetching town data: " + e.getMessage());
                            // }
                        }
                    }
                } catch (IOException e) {
                }
            }
        }
        return areas;

        // 批量插入到数据库
        // areaMapper.insertBatchSomeColumn(areas);
    }


http://www.kler.cn/news/317907.html

相关文章:

  • 研1日记15
  • 快速了解使用路由器
  • openssl-AES-128-CTR加解密char型数组分析
  • 代码随想录算法训练营||二叉树
  • 背景图鼠标放上去切换图片过渡效果
  • PHPMailer低版本用法(实例)
  • 深入解析Linux驱动开发中的I2C时序及I2C高频面试题
  • 前端vue-ref与document.querySelector的对比
  • 2024年9月24日---关于MyBatis框架(3)
  • Linux使用Clash,clash-for-linux
  • OpenCV多通道图像混合(六)
  • 【Linux 从基础到进阶】 QEMU 虚拟化配置与优化
  • OpenAI最新GPT-o1-preview测评
  • 关于事务的一些梳理
  • Springboot+Shiro+Mybatis+mysql实现权限安全认证
  • 深入解析:高性能 SSE 服务器的设计与实现
  • linux中crontab工具详解
  • React-Native 中使用 react-native-image-crop-picker 在华为手机上不能正常使用拍照功能
  • SQL常用技巧总结
  • ​‌GAS系统​
  • 【Kubernetes】常见面试题汇总(三十六)
  • OMRON欧姆龙通讯模块CI541V1
  • 网络安全:构建数字世界的坚固防线
  • MVCC机制解析:提升数据库并发性能的关键
  • Golang如何优雅的退出程序
  • MyBatis错误处理与日志
  • golang学习笔记31——golang 怎么实现枚举
  • 力扣2563.统计公平数对的数目
  • 【chromedriver编译-绕过selenium机器人检测】
  • st7735 stm32f103 lvgl调试记录3,spi篇