亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Jsoup獲取全國地區數據(省市縣鎮村)(續)純干貨分享

2019-11-14 15:10:51
字體:
來源:轉載
供稿:網友

前幾天給大家分享了一下,怎么樣通過jsoup來從國家統計局官網獲取全國省市縣鎮村的數據。錯過的朋友請點擊這里。
上文說到抓取到數據以后,我們怎么轉換成我們想要格式呢?哈哈,解析方式可能很簡單,但是有一點我是知道的,很多人是伸手黨,那么我就把我的處理過程給大家分享出來,覺得不錯的,請點個贊。

第一步:將獲取到的txt文件轉換成數據庫文件:

這里需要備注一下,下文所有的資源壓縮文件,解壓密碼都是我的博客園昵稱。為什么要加密碼給大家解釋一下:前期發出的博文被其他很多站點爬取了,但是都沒有原文鏈接或者轉載說明,一點都不尊重原博文的版權。給大家帶來的不便,敬請諒解。

上次博文處理后的文本數據下載地址:點擊下載

廢話不多說,直接上代碼將抓取到的文本文件轉換成數據庫數據:

 1 import java.io.BufferedReader; 2 import java.io.File; 3 import java.io.FileNotFoundException; 4 import java.io.FileReader; 5 import java.io.IOException; 6 import java.sql.Connection; 7 import java.sql.DriverManager; 8 import java.sql.SQLException; 9 import java.sql.Statement;10 11 public class ResolveData112 {13     PRivate static Connection connection = null;14 15     public static void main(String[] args)16     {17         initDB();18 19         BufferedReader bufferedReader = null;20         try21         {22             bufferedReader = new BufferedReader(new FileReader(new File("f://CityInfo.txt")));23             String line = null;24             while ((line = bufferedReader.readLine()) != null)25             {26                 inser2DB(getCityName(line), getCityLevel(line), getCityCode(line));27                 System.out.println("處理中&hell);28             }29         } catch (FileNotFoundException e)30         {31             e.printStackTrace();32         } catch (IOException e)33         {34             e.printStackTrace();35         }36     }37 38     private static void initDB()39     {40         try41         {42             Class.forName("com.MySQL.jdbc.Driver");43             connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/51houseservice", "數據庫賬戶",44                 "數據庫密碼");45         } catch (SQLException e)46         {47             e.printStackTrace();48         } catch (ClassNotFoundException e)49         {50             e.printStackTrace();51         }52     }53 54     private static String getCityName(String line)55     {56         return line.substring(0, line.indexOf("{"));57     }58 59     private static String getCityCode(String line)60     {61         return line.substring(line.indexOf("[") + 1, line.indexOf("]"));62     }63 64     private static int getCityLevel(String line)65     {66         return Integer.parseInt(line.substring(line.indexOf("{") + 1, line.indexOf("}")));67     }68 69     private static void inser2DB(String cityName, int cityLevel, String cityCode)70     {71         try72         {73 74             Statement createStatement = connection.createStatement();75             createStatement76                 .executeUpdate("insert into _51houseservice_citys_copy(city_name_zh,city_level,city_code) values('"77                     + cityName + "'," + cityLevel + ",'" + cityCode + "')");78         } catch (SQLException e)79         {80             e.printStackTrace();81         }82     }83 }

 執行完以上程序以后,那么數據就已經妥妥的放入數據庫了。存入數據庫的數據,相信各位碼農都是高手,這些數據都成了你們砧板上的與魚肉了吧。

第二步:將數據庫的每一行數據添加上其父城市

細心的朋友一定發現了,上面的每一個城市數據都只是包含一自己本身的詳細信息,但是省級城市與市級城市之間沒有任何關聯?;跇湫谓Y構的數據在數據庫應該怎樣存儲我就不多說了。這里就直接貼上關聯各上下級關聯的城市的代碼:

接下來的是處理過程中的代碼:

  1 package com.wyhousesevice.test;  2 import java.sql.Connection;  3 import java.sql.DriverManager;  4 import java.sql.ResultSet;  5 import java.sql.SQLException;  6 import java.sql.Statement;  7 import java.util.ArrayList;  8 import java.util.List;  9  10 public class ResolveData3 11 { 12     private static Connection connection; 13  14     public static void main(String[] args) 15     { 16         initDB(); 17         try 18         { 19             // 獲取源表中一行數據 20             ResultSet rs = getAllCitys(); 21             rs.next(); 22             while (rs.next()) 23             { 24                 // 如果該項存在父ID,則跳過設置 25                 if (rs.getInt("parent_id") == 0) 26                 { 27                     List<String> parentCodes = getParentCodes(rs.getString("city_code")); 28                     // 獲取目標數據庫的數據ID 29                     int parentId = getParentId(parentCodes, rs.getInt("city_level") - 1); 30                     doUpdate(rs.getInt("id"), parentId); 31                     System.out.println("handling:" + rs.getInt("id")); 32                 } 33             } 34         } 35         catch (SQLException e) 36         { 37             e.printStackTrace(); 38         } 39  40         closeDB(); 41     } 42  43     private static void doUpdate(int id, int parentId) 44     { 45         try 46         { 47             Statement statement = connection.createStatement(); 48             statement.executeUpdate("UPDATE _51houseservice_citys_copy SET parent_id = " + parentId + " WHERE id = " 49                 + id); 50         } 51         catch (SQLException e) 52         { 53             e.printStackTrace(); 54         } 55     } 56  57     private static int getParentId(List<String> parentCodes, int level) throws SQLException 58     { 59         Statement statement = connection.createStatement(); 60         for (String string : parentCodes) 61         { 62             ResultSet executeQuery = statement 63                 .executeQuery("select * from _51houseservice_citys_copy where city_code='" + string 64                     + "' and city_level=" + level); 65             if (executeQuery.next()) 66             { 67                 return executeQuery.getInt("id"); 68             } 69         } 70         return -1; 71     } 72  73     private static List<String> getParentCodes(String cityCode) 74     { 75         List<String> dataList = new ArrayList<String>(); 76  77         if (cityCode.endsWith("0")) 78         { 79             String code = rmvLastZero(cityCode); 80             for (int i = 1; i < code.length() - 1; i++) 81             { 82                 String substring = code.substring(0, code.length() - i); 83                 StringBuilder sb = new StringBuilder(substring); 84                 for (int j = substring.length(); j < 12; j++) 85                 { 86                     sb.append("0"); 87                 } 88                 dataList.add(sb.toString()); 89             } 90         } 91         else 92         { 93             for (int i = 1; i < cityCode.length() - 1; i++) 94             { 95                 String substring = cityCode.substring(0, cityCode.length() - i); 96                 StringBuilder sb = new StringBuilder(substring); 97                 for (int j = 1; j <= i; j++) 98                 { 99                     sb.append("0");100                 }101                 dataList.add(sb.toString());102             }103         }104         return dataList;105     }106 107     private static String rmvLastZero(String cityCode)108     {109         while (cityCode.endsWith("0"))110         {111             cityCode = cityCode.substring(0, cityCode.length() - 1);112         }113         return cityCode;114     }115 116     private static ResultSet getAllCitys()117     {118         try119         {120             Statement createStatement = connection.createStatement();121             return createStatement.executeQuery("select * from _51houseservice_citys_copy");122         }123         catch (SQLException e)124         {125             e.printStackTrace();126             return null;127         }128     }129 130     private static void closeDB()131     {132         if (connection != null)133         {134             try135             {136                 connection.close();137             }138             catch (SQLException e)139             {140                 e.printStackTrace();141             }142         }143     }144 145     private static void initDB()146     {147         try148         {149             Class.forName("com.mysql.jdbc.Driver");150             connection = DriverManager151                 .getConnection("jdbc:mysql://localhost:3306/51houseservice", "數據庫賬戶", "數據庫密碼");152         }153         catch (SQLException e)154         {155             e.printStackTrace();156         }157         catch (ClassNotFoundException e)158         {159             e.printStackTrace();160         }161     }162 }

 接下來就需要時間處理了,慢慢的處理.....最終得到的sql轉儲文件結果如下:點擊下載

  

如果你覺得本博文對你有所幫助,請記得點擊右下方的"推薦"哦,么么噠... 

 轉載請注明出處:http://www.49028c.com/liushaofeng89/p/4937714.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大全免费观看电视剧大泉洋| 亚洲资源在线看| 国产午夜精品美女视频明星a级| 4p变态网欧美系列| 精品视频www| 亚洲一区二区三区在线免费观看| 色av中文字幕一区| 久久久久久久久91| 精品久久久久久国产91| 亚洲人午夜色婷婷| 日韩欧美在线第一页| 成人免费看片视频| 日韩一区二区三区国产| 国产综合在线看| 国产成人亚洲精品| 亚洲国产美女久久久久| 国产亚洲a∨片在线观看| 亚洲精品aⅴ中文字幕乱码| 亚洲精品720p| 亚洲跨种族黑人xxx| 欧洲成人在线观看| 欧美高清在线观看| 国产色综合天天综合网| 日韩中文在线中文网在线观看| 久久久久久久久久久网站| 一区二区三区黄色| 国产成人鲁鲁免费视频a| 国产视频亚洲精品| 清纯唯美亚洲综合| 色av中文字幕一区| 91九色单男在线观看| 在线免费观看羞羞视频一区二区| 九九九久久久久久| 亚洲精品小视频在线观看| 久久综合伊人77777尤物| 欧美福利视频在线观看| 国产欧美一区二区三区四区| 亚洲视频国产视频| www.日韩不卡电影av| 九色精品美女在线| 66m—66摸成人免费视频| 精品偷拍一区二区三区在线看| 久久精品99国产精品酒店日本| 日韩中文字幕国产精品| 亚洲一区二区三区乱码aⅴ| 精品色蜜蜜精品视频在线观看| 久久精品成人一区二区三区| 亚洲国产精品va在线看黑人动漫| 亚洲国产精品免费| 日韩精品中文在线观看| 亚洲xxxx妇黄裸体| 国产在线观看精品一区二区三区| 国产精品露脸av在线| 日韩网站免费观看高清| 欧美日韩亚洲成人| 日韩免费视频在线观看| 亚洲qvod图片区电影| 九九九久久国产免费| 亚洲一品av免费观看| 人九九综合九九宗合| 中文在线不卡视频| 欧美精品18videosex性欧美| 色无极亚洲影院| 91久久久久久久久久久| 久久国产精品偷| 亚洲最大av网| 日本视频久久久| 久久久久国产精品免费| 亚洲国产高清福利视频| 久久精品国产一区二区电影| 日韩中文字幕免费看| 色偷偷av一区二区三区乱| 精品一区二区三区三区| 91精品国产综合久久久久久久久| 亚洲黄色在线看| 最近2019好看的中文字幕免费| 欧美日韩精品中文字幕| 亚洲最大中文字幕| 国产视频精品在线| 亚洲aⅴ男人的天堂在线观看| 国产精品第2页| 欧美日韩视频在线| 亚洲欧美中文日韩在线v日本| 91成人精品网站| 国产亚洲精品一区二区| 98精品国产自产在线观看| 欧美精品午夜视频| 91久久久久久国产精品| 韩国精品久久久999| 国产成人高清激情视频在线观看| 欧美在线视频免费播放| 美日韩精品视频免费看| 成人欧美一区二区三区在线湿哒哒| 国产欧美日韩中文字幕| 国产日韩av高清| 久久久久久久久久久免费精品| 亚洲欧美另类在线观看| 日韩电影免费在线观看中文字幕| 久久国产一区二区三区| 亚洲free性xxxx护士hd| 久久精品国产亚洲一区二区| 国产欧美日韩中文| 欧美性受xxxx白人性爽| 91性高湖久久久久久久久_久久99| 亚洲一区亚洲二区| 久久久久亚洲精品国产| 国产成人一区二区在线| 久久亚洲精品国产亚洲老地址| 久久躁狠狠躁夜夜爽| 亚洲欧美在线播放| 欧美高跟鞋交xxxxxhd| 国产精自产拍久久久久久蜜| 91在线观看免费高清完整版在线观看| 欧美一区在线直播| 日韩av在线一区| 国产91精品久久久久久久| 伊人伊人伊人久久| 最近2019年日本中文免费字幕| 久久久视频在线| 视频在线观看99| 91色中文字幕| 555www成人网| 久久九九全国免费精品观看| 久久天天躁日日躁| 国产精品久久视频| 亚洲欧洲日韩国产| 日韩欧美主播在线| 成人福利视频在线观看| 色视频www在线播放国产成人| www.欧美免费| 亚洲国产欧美日韩精品| 高清欧美一区二区三区| 影音先锋日韩有码| 992tv成人免费视频| 国产精品 欧美在线| 欧美第一黄色网| 国产精品pans私拍| 亚洲在线一区二区| 日韩av片免费在线观看| 1769国内精品视频在线播放| 91av视频在线免费观看| 亚洲天堂av在线播放| 国产在线日韩在线| 色噜噜狠狠色综合网图区| 一区二区三区视频免费| 色哟哟网站入口亚洲精品| 久久免费国产视频| 欧美午夜精品伦理| 国产精品视频白浆免费视频| 福利一区福利二区微拍刺激| 国产亚洲人成a一在线v站| 亚洲一区精品电影| 国产91网红主播在线观看| 日韩久久午夜影院| 色综合久久悠悠| 成人444kkkk在线观看| 亚洲欧洲国产一区| 亚洲欧洲一区二区三区久久| 8x海外华人永久免费日韩内陆视频| 亚洲在线一区二区| 久久久久这里只有精品| 97久久久久久| 亚洲精品短视频| 亚洲免费视频在线观看|