91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用java怎么獲取國家統計局行政區

發布時間:2021-06-18 16:57:23 來源:億速云 閱讀:200 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關使用java怎么獲取國家統計局行政區,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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("<A");
        for (String s : arrs) {
            if (s.indexOf("HREF") != -1 && s.indexOf(".HTML") != -1) {

                String a = s.substring(7, s.indexOf("'>"));
                String provinceCode = a.substring(0, 2) + "0000000000";
                System.out.println("省級CODE:" + provinceCode);
                String name = s.substring(s.indexOf("'>")+2, s.indexOf("<BR/>"));
                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");
        //'><TD><A HREF='11/1101.HTML'>110100000000</A></TD><TD><A HREF='11/1101.HTML'>市轄區</A></TD></td><TR CLASS='
        for(int c=1,len=citys.length; c<len; c++){
            String[] strs = citys[c].split("<A HREF='");
            String cityUrl = null;
            String cityName = null;
            for(int si = 1; si<3; si++){
                if(si==1){//取鏈接和編碼
                    cityUrl = strs[si].substring(0, strs[si].indexOf("'>"));
                    String cityCode = strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("</A>"));
                    System.out.println("cityCode:" + cityCode);
                }else{
                	cityName = name+strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("</A>")); 
                    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<citys.length; i++){
            String cityUrl = null;
            String areaName = null;
            
            if(citys[i].indexOf("<A HREF='")==-1){
                String cityCode = citys[i].substring(6, 18);
                System.out.println("AreaCode:"+cityCode);
            	areaName = cityName + citys[i].substring(citys[i].indexOf("</TD><TD>")+9,citys[i].lastIndexOf("</TD>")); 
                System.out.println("獲取所屬市轄區:" + areaName);
            }else{
                String[] strs = citys[i].split("<A HREF='");
                for(int si = 1; si<3; si++){
                    if(si==1){//取鏈接和編碼
                        cityUrl = strs[si].substring(0, strs[si].indexOf("'>"));
                        String cityCode = strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("</A>"));
                        System.out.println("AreaCode:"+cityCode);
                    }else{
                    	areaName = cityName+strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("</A>")); 
	                    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<citys.length; i++){
            String[] strs = citys[i].split("<A HREF='");
            String cityUrl = null;
            String towntrName = null;
            for(int si = 1; si<3; si++){
                if(si==1){//取鏈接和編碼
                    cityUrl = strs[si].substring(0, strs[si].indexOf("'>"));
                    String cityCode = strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("</A>"));
                    System.out.println(cityCode);
                }else{
                	towntrName = areaName+strs[si].substring(strs[si].indexOf("'>")+2, strs[si].indexOf("</A>")); 
                    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<citys.length; i++){
        	//村級機構代碼
        	String villageCode = null;
        	//城鄉分類代碼
        	String cxfldm = null;
        	//村級名稱
        	String cunName = null;
            String[] strs = citys[i].split("<TD>");
            villageCode = strs[1].substring(0, strs[1].indexOf("</TD>"));
            cxfldm = strs[2].substring(0, strs[2].indexOf("</TD>"));
            cunName = towntrName + strs[3].substring(0, strs[3].indexOf("</TD>"));
            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怎么獲取國家統計局行政區了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东莞市| 石景山区| 绥棱县| 大连市| 澄城县| 内丘县| 外汇| 西林县| 泰和县| 通州市| 平阳县| 沙雅县| 辰溪县| 凤城市| 大方县| 鲁山县| 巴楚县| 松溪县| 华亭县| 洪泽县| 会同县| 麦盖提县| 大英县| 大埔区| 木兰县| 星子县| 德保县| 邛崃市| 工布江达县| 东阳市| 伊金霍洛旗| 盐城市| 滦平县| 方山县| 延庆县| 房产| 汉阴县| 渝北区| 蓬安县| 绍兴市| 太保市|