
sql數據下載:http://download.csdn.net/download/linyongqin/10224874
獲取省、市、區
網址:http://www.mca.gov.cn/article/sj/tjbz/a/2017/
獲取省、市、區、街道、村
網址:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/
統計用區划代碼和城鄉划分代碼編制規則
--北京、天津、上海、重慶
INSERT INTO dmb_city (CityCode,CityName,CityLevel,CityRemark) VALUES ('110100','市轄區',2,'city');
INSERT INTO dmb_city (CityCode,CityName,CityLevel,CityRemark) VALUES ('120100','市轄區',2,'city');
INSERT INTO dmb_city (CityCode,CityName,CityLevel,CityRemark) VALUES ('310100','市轄區',2,'city');
INSERT INTO dmb_city (CityCode,CityName,CityLevel,CityRemark) VALUES ('500100','市轄區',2,'city');
-- 省 province
-- 市 city
-- 區 area
-- 街道 town
select * from dmb_city where CityCode like '%00' and CityLevel<>1
--市
update dmb_city set CityLevel=1,CityRemark='province' where where CityCode like '%0000'
update dmb_city set CityLevel=2,CityRemark='city' where where CityCode like '%00'
update dmb_city set CityLevel=3,CityRemark='area' where where CityLevel not in (1,2)
--110000
--130200
select * from dmb_city where CityLevel=3 or CityLevel=1
--更新父級代碼
update dmb_city set ParentCode=substring(CityCode,1,2)+'0000' where CityLevel=2
update dmb_city set ParentCode=substring(CityCode,1,4)+'00' where CityLevel=3
update dmb_city set ParentCode=substring(CityCode,1,6) where CityLevel=4
update dmb_city set CityName=substring(CityName,1,len(CityName)-1) where CityName like '%街道辦'
#region 根據區獲取街道信息
WebClient wc = new WebClient();
Stopwatch sw = new Stopwatch();
sw.Start();
Response.Write("<p>-------------------- 獲取數據 begin --------------------</p>");
long index = 0;
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO dmb_city (CityCode,CityName) VALUES ");
DataTable dt = SqlHelper.ExecuteDataset(SqlHelper.connectionString, CommandType.Text, "select * from dmb_city where CityLevel=3").Tables[0];
foreach (DataRow dr in dt.Rows)
{
//Response.Write("<p>" + dr["CityCode"] + "-" + dr["CityName"]+"</p>");
try
{
//http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/44/05/440511.html
//拼接網址
string url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/" + dr["CityCode"].ToString().Substring(0, 2) + "/" + dr["CityCode"].ToString().Substring(2, 2) + "/" + dr["CityCode"].ToString() + ".html";
string html = wc.DownloadString(url);
MatchCollection mc = Regex.Matches(html, "<tr\\sclass='towntr'><td><a\\shref='.+?'>(.+?)</a></td><td><a\\shref='.+?'>(.+?)</a></td></tr>");
int i = 0;
//遍歷匹配的內容
foreach (Match item in mc)
{
if (item.Success)
{
//Response.Write(item.Groups[1].Value);
//拼接SQL 過濾無效字符
sb.Append("('" + item.Groups[1].Value.Substring(0, 9) + "','" + item.Groups[2].Value.Replace("辦事處", "").Replace("街道辦", "街道") + "')");
index++;
if (index > 900)
{
sb.Append(";");
index = 1;
sb.Append("INSERT INTO dmb_city (CityCode,CityName) VALUES ");
}
else
{
sb.Append(",");
}
}
}
}
catch
{
//獲取不到網絡鏈接直接跳過
continue;
}
}
Response.Write("<p>" + sb.ToString().TrimEnd(',') + ";</p>");
Response.Write("<p>-------------------- 獲取數據 end --------------------</p>");
sw.Stop();
Response.Write("<p>-------------------- 共用 " + sw.ElapsedMilliseconds + "毫秒 --------------------</p>");
#endregion