从统计局抓取2016年最新的全国区县数据!!
生活随笔
收集整理的這篇文章主要介紹了
从统计局抓取2016年最新的全国区县数据!!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HtmlAgilityPack;
using System.Text;
public partial class 抓取區縣 : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){}protected void Button1_Click(object sender, EventArgs e){string Url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2015/index.html";HtmlWeb hw = new HtmlWeb();hw.OverrideEncoding = System.Text.Encoding.GetEncoding("GB2312");HtmlDocument doc = hw.Load(Url); doc.OptionReadEncoding = true;StringBuilder sb = new StringBuilder();HtmlNodeCollection hrefList = doc.DocumentNode.SelectNodes(".//a[@href]");if (hrefList != null){foreach (HtmlNode href in hrefList){int dep = 1;//深度
HtmlAttribute att = href.Attributes["href"];if (att.Value.Contains("miibeian"))//去除備案continue;string depurl = Url.Replace("index.html", att.Value);Response.Write(href.InnerText + "(" + att.Value.Replace(".html","").PadRight(12, '0') + ")<br/>");// +GetArea(depurl, dep, att.Value.Replace(".html", "").PadRight(12, '0'));// break;}}// GetArea("http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2015/14/1401.html",2);
}/// <summary>/// 遞歸讀取方法/// </summary>/// <param name="Url">下級地址</param>/// <param name="dep">下級深度</param>/// <param name="parentCode">上級代碼</param>void GetArea(string Url, int dep, string parentCode){//遞歸讀取方法
HtmlWeb hw = new HtmlWeb();hw.OverrideEncoding = System.Text.Encoding.GetEncoding("GB2312");HtmlDocument doc = hw.Load(Url);//是你需要解析的urldoc.OptionReadEncoding = true;dep++;StringBuilder sb = new StringBuilder();HtmlNodeCollection hrefList = doc.DocumentNode.SelectNodes(".//tr[@class='" + classname(dep) + "']/td[last()]");if (hrefList != null){foreach (HtmlNode href in hrefList){HtmlNodeCollection hrefNode = href.SelectNodes(".//a[@href]");if (hrefNode != null)//鏈接存在
{HtmlAttribute att = hrefNode[0].Attributes["href"];if (att.Value.Contains("miibeian"))//去除備案continue;string codeNum = href.PreviousSibling.InnerText.PadRight(12, '0');Response.Write(joinstr(dep) + href.InnerText + "(" + codeNum + ")<br/>");string depurl = Url.Replace(parentCode.Substring(0, 2 * (dep-1)) + ".html", att.Value);if(dep<4)//到鄉鎮即可
GetArea(depurl, dep, codeNum);}else{Response.Write(joinstr(dep) + href.InnerText + "(" + href.PreviousSibling.InnerText.PadRight(12, '0') + ")<br/>");}}}}/// <summary>/// 分級連接符/// </summary>/// <param name="dep"></param>/// <returns></returns>string joinstr(int dep){string str = "";for (int i = 1; i < dep; i++){str += "-----|";}return str;}/// <summary>/// 不同級別不同的class名稱/// </summary>/// <param name="dep"></param>/// <returns></returns>string classname(int dep){string str = "";switch (dep){case 2:str = "citytr";break;case 3:str = "countytr";break;case 4:str = "towntr";break;default:break;};return str;}
}
以上是我寫的完整代碼,用的HtmlAgilityPack組件解析html,直接開源下載就可以。關鍵的數據都已經獲得到 如:區號 ?和名稱 ?
你可以用來寫入你的數據庫即可。
效果如下:
轉載于:https://www.cnblogs.com/efreer/p/6230624.html
總結
以上是生活随笔為你收集整理的从统计局抓取2016年最新的全国区县数据!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东股票最高的时候
- 下一篇: C# 使用HttpWebRequest