C#+HtmlAgilityPack+XPatSF传奇网页版h带你采集数据(以采集天气数据为例子)(2)
作者:私服传奇网页版 来源:www.szlyw.com.cn 点击:172
要采集大量的信息,必须对网站页面进行详细的分析和总结。因为机器采集不是人工,需要动态构造URL,请求或者页面html,然后进行解析。所以分析网站页面结构是第一步,也是很关键的一步。我们首先进入到总的历史页面:,如下图:
很明显,这个总的页面按省份进行了分开,可以看到每个省份、地级市名称的链接中,都是固定格式,只不过拼音缩写不同而已。而且每个省份的第一个城市为省会城市。这一点要注意,程序中要区分省会城市和其他地级城市。当然省会城市也可以省略,毕竟只有30多个,手动标记也很快的事情。这个页面我们将主要采集省份的缩写信息,然后我们选择一个省份,点击进去,看每个省份具体的城市信息,如我们选择辽宁省:如下图:
同样,每个省份下面的地区也有单独的链接,格式和上面的类似,按照城市拼音。我们看到每个省份下面,有大的地级行政区,每个地级市区后面细分了小的县市区。我们随意点击大连市的链接,进去看看具体的天气历史信息:
该页面包括了城市2011年1月到2015年至今的历史数据,按月分开。链接的特点也很固定,包括了城市名称的拼音和年份月份信息。所以构造这个链接就很容易了。下面看看每个月份的情况:
广告我屏蔽了一些,手动给抹掉吧。每个城市的每个月的天气信息比较简单,直接表格填充了数据,日期,天气状况,气温和风力。这几步都是按照页面的链接一步一步引导过来的,所以上述流程清楚了,要采集的信息也清楚了,有了大概的思路:
先采集整个省份的拼音代码,然后依次获取每个省份每个地级市,以及对应县级市的名称和拼音代码,最后循环每个县级市,按照月份获取所有历史数据。下面将重点分析几个页面的节点情况,就是如何用HtmlAgilityPack和Xpath来获取你要的数据信息,至于保存到数据库,八仙过海各显神通吧,我用的是XCode组件。
3.3 分析省-县市结构页面还是以辽宁省为例: ,打开页面,右键获取网页源代码后,粘贴到 HAPExplorer 中,也可以直接在HAPExplorer 中打开链接,如下面的动画演示:
我们可以看到,右侧的XPath地址,div结束后,下面都是dl标签,就是我们要采集的行了。下面我们用代码来获取上述结构。先看看获取页面源代码的代码:
public static string GetWebClient(string url) { string strHTML = ""; WebClient myWebClient = new WebClient(); Stream myStream = myWebClient.OpenRead(url); StreamReader sr = new StreamReader(myStream, Encoding.Default);//注意编码 strHTML = sr.ReadToEnd(); myStream.Close(); return strHTML; }下面是分析每个省份下属县市区的程序,限于篇幅我们省掉了数据库部分,只采集城市和拼音代码,并输出:
/// <summary>添加省级-地区-县市 的城市信息,注意 省会城市 标记5</summary> /// <param name="cityCode">省份代码</param> public static void ParsePageByArea(String cityCode) { //更加链接格式和省份代码构造URL String url = String.Format("http://www.tianqihoubao.com/lishi/{0}.htm", cityCode); //下载网页源代码 var docText = HtmlHelper.GetWebClient(url); //加载源代码,获取文档对象 var doc = new HtmlDocument(); doc.LoadHtml(docText); //更加xpath获取总的对象,如果不为空,就继续选择dl标签 var res = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/div[1]/div[6]/div[1]/div[1]/div[3]"); if (res != null) { var list = res.SelectNodes(@"dl");//选择标签数组 if (list.Count < 1) return; foreach (var item in list) { var dd = item.SelectSingleNode(@"dd").SelectNodes("a"); foreach (var node in dd) { var text = node.InnerText.Trim(); //拼音代码要从href属性中进行分割提取 var herf = node.Attributes["href"].Value.Trim().Split('http://www.cnblogs.com/', '.'); Console.WriteLine("{0}:{1}", text, herf[herf.Length - 2]); } } } }我们以辽宁为例,调用代码:ParsePageByArea("ln");结果如下:
点击排行
- 美媒担忧中美发生太空战美或被打回二战时代
- 魔兽一周囧闻:小阿回来,小沈阳
- 绿甲并非坦克首选:魔抗装到底该怎么出
- 有大翅膀的王大锤 韩服DNF圣职者二觉开放
- 无锡三位绣娘拜师顾青蛟 再接再厉让锡绣流传
- 新大话2:新专利减少排队时间 移动版研发中
- 《传奇页游SF4》完全流程攻略一(PS2)
- 玩玩手机版传奇sf变态版下载【官方安卓版】
- Yallacompare将利用区块链及3D打印技术跨界打造完全自动驾驶汽车
- 习近平举行仪式欢迎传奇sf网页游戏厄瓜多尔总统访华并同其举行会
- 美华裔警察执勤时开轻变私服传奇枪打死偷车嫌疑人 却被起诉了
- “历史的记忆”展超变态传奇私服览记载中美共同抗击侵略者事迹
- 望海楼:擦清超变态传奇私服历史镜子 走好未来的路
- 刘诗诗王千源《网页版SF传奇》什传奇私服么时候播出? 《 网页版
- SF传奇网页游戏好友超变态私服传奇组队模式怎么玩?高手速成攻略
最新更新的文章
- 美媒担忧中美发生太空战美或被打回二战时代
- 魔兽一周囧闻:小阿回来,小沈阳
- 绿甲并非坦克首选:魔抗装到底该怎么出
- 有大翅膀的王大锤 韩服DNF圣职者二觉开放
- 无锡三位绣娘拜师顾青蛟 再接再厉让锡绣流传
- 新大话2:新专利减少排队时间 移动版研发中
- 《传奇页游SF4》完全流程攻略一(PS2)
- 玩玩手机版传奇sf变态版下载【官方安卓版】
- Yallacompare将利用区块链及3D打印技术跨界打造
- 习近平举行仪式欢迎传奇sf网页游戏厄瓜多尔总统
- 美华裔警察执勤时开轻变私服传奇枪打死偷车嫌疑
- “历史的记忆”展超变态传奇私服览记载中美共同
- 望海楼:擦清超变态传奇私服历史镜子 走好未来的
- 刘诗诗王千源《网页版SF传奇》什传奇私服么时候
- SF传奇网页游戏好友超变态私服传奇组队模式怎么