这期内容当中小编将会给大家带来有关使用java怎么获取国家统计局行政区,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联建站是一家专注于网站设计、做网站与策划设计,洮北网站建设哪家好?创新互联建站做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:洮北等地区。洮北做网站价格咨询:18980820575
1、该程序可根据需求取所需的省、市、县、乡镇(街道)、村(居)委会,代码为12位;
2、获取的年份可以更换;
3、可以根据需求写入数据库,方便使用,每年可更新维护一次;
4、国家统计局有访问限制,不宜一次性获取全国全部数据,建议可按照省份进行划分,分段获取 ;
实现代码如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.CookiePolicy;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.List;
/**
从国家统计局获取行政区划
国家统计局-NBOS(National Bureau of Statistics)
*/
/** * 读省的信息 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { String url = baseUrl + "index.html"; //如果需要设置代理 //initProxy("xx.xx.xx.xx", "xx"); String str = getContent(url).toUpperCase(); String[] arrs = str.split("")); String provinceCode = a.substring(0, 2) + "0000000000"; System.out.println("省级CODE:" + provinceCode); String name = s.substring(s.indexOf("'>")+2, s.indexOf("
")); if(!"北京市".equals(name)){ continue; } System.out.println("获取省份:"+name); readShi(a,name); } } }
/** * 读市的数据 * @param list * @throws Exception */ public static void readShi(String url,String name) throws Exception{ String content = getContent(baseUrl+url).toUpperCase(); String[] citys = content.split("CITYTR"); //'>110100000000 市辖区 ")); String cityCode = strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("")); System.out.println("cityCode:" + cityCode); }else{ cityName = name+strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("")); System.out.println("获取所属市:" + cityName); } } readXian(cityUrl.substring(0, cityUrl.indexOf("/")+1),cityUrl,cityName); } } /** * 读县的数据 * @param url * @throws Exception */ public static void readXian(String prix,String url,String cityName) throws Exception{ String content = getContent(baseUrl+url).toUpperCase(); String[] citys = content.split("COUNTYTR"); for(int i=1; i ")+9,citys[i].lastIndexOf(" ")); System.out.println("获取所属市辖区:" + areaName); }else{ String[] strs = citys[i].split("")); String cityCode = strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("")); System.out.println("AreaCode:"+cityCode); }else{ areaName = cityName+strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("")); System.out.println("获取所属市区(或者县级市):" + areaName); } } } if(null!=cityUrl){ readZhen(prix,cityUrl,areaName); } } } /** * 读镇的数据 * @param url * @throws Exception */ public static void readZhen(String prix,String url,String areaName) throws Exception{ String content = getContent(baseUrl+prix+url).toUpperCase(); String myPrix = (prix+url).substring(0, (prix+url).lastIndexOf("/")+1); String[] citys = content.split("TOWNTR"); for(int i=1; i")); String cityCode = strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("")); System.out.println(cityCode); }else{ towntrName = areaName+strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("")); System.out.println("获取所属乡镇(街道办事处):" + towntrName); } } readCun(myPrix,cityUrl,towntrName); } } /** * 读村/街道的数据 * @param url * @throws Exception */ public static void readCun(String prix,String url,String towntrName) throws Exception{ String content = getContent(baseUrl+prix+url).toUpperCase(); String[] citys = content.split("VILLAGETR"); for(int i=1; i "); villageCode = strs[1].substring(0, strs[1].indexOf("")); cxfldm = strs[2].substring(0, strs[2].indexOf("")); cunName = towntrName + strs[3].substring(0, strs[3].indexOf("")); System.out.println("villageCode:" + villageCode + "***cxfldm:" + cxfldm); System.out.println("所属村数据:" + cunName); } } //设置代理 public static void initProxy(String host, String port) { System.setProperty("http.proxyType", "4"); System.setProperty("http.proxyPort", port); System.setProperty("http.proxyHost", host); System.setProperty("http.proxySet", "true"); } //获取网页的内容 public static String getContent(String strUrl) throws Exception { try { //防止没有检查到cookie,一直循环重定向 CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL)); URL url = new URL(strUrl); java.net.HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //因为没有验证通过,导致没有跳到下一个地址,还是返回当前地址。 //这样的结果是,相同地址不断地跳回自己,变成死循环。20次以后,就报异常了 //java.net.ProtocolException: Server redirected too many times (20) conn.setInstanceFollowRedirects(false); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),Charset.forName(CHARSET))); String s = ""; StringBuffer sb = new StringBuffer(""); while ((s = br.readLine()) != null) { sb.append(s); } br.close(); return sb.toString(); } catch (Exception e) { System.out.println("can't open url:"+strUrl); throw e; } } }
上述就是小编为大家分享的使用java怎么获取国家统计局行政区了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
网页名称:使用java怎么获取国家统计局行政区
本文来源:http://cxhlcq.com/article/jpsjgh.html其他资讯