//解析大江大河实时水情 public void ParseBigRiver() { int count = 0; HtmlNodeCollection anchors = this.bigRiverDoc.DocumentNode.SelectNodes(@"/table/tr"); foreach (HtmlNode hn in anchors) { RiverHydrology rh = new RiverHydrology(); //解析流域 HtmlNode nodeBasin = hn.SelectNodes("td").FindFirst("td"); string basin = UnicodeToString(nodeBasin.InnerText.Trim()); rh.Basin = basin; //解析行政区 HtmlNode nodeDistruct = hn.SelectNodes("td[2]").FindFirst("td"); string distruct = UnicodeToString(nodeDistruct.InnerText.Trim()); rh.AdministrativeRegion = distruct; //解析河名 HtmlNode nodeRiver = hn.SelectNodes("td[3]").FindFirst("td"); rh.RiverName = UnicodeToString(nodeRiver.InnerText.Trim()); //解析站名 HtmlNode nodeStation = hn.SelectNodes("td[4]/font").FindFirst("font"); rh.StationName = UnicodeToString(nodeStation.InnerText.Trim()); //解析时间 HtmlNode nodeTime = hn.SelectNodes("td[5]").FindFirst("td"); string timeStr = nodeTime.InnerText.Trim(); rh.Time = StrToTime(timeStr); //解析水位 HtmlNode nodeLevel = hn.SelectNodes("td[6]/font").FindFirst("font"); try { rh.WaterLevel = Convert.ToDouble(nodeLevel.InnerText.Trim()); } catch (Exception) { rh.WaterLevel = -1.0; } //解析流量 HtmlNode nodeFlow = hn.SelectNodes("td[7]").FindFirst("td"); try { rh.Flow = Convert.ToDouble(nodeFlow.InnerText.Trim()); } catch (Exception) { rh.Flow = -1.0; } //解析警戒水位 HtmlNode nodeWarning = hn.SelectNodes("td[8]").FindFirst("td"); try { rh.WarningWaterLevel = Convert.ToDouble(nodeWarning.InnerText.Replace(" ", "").Trim()); } catch (Exception) { rh.WarningWaterLevel = -1.0; } listBigRiver.Add(rh); count++; } LogHelper.WriteLog(typeof(HtmlParse), "大江大河水情数据爬取解析成功,共:" + count + "条"); }
//解析全国重点河道站实时水情 public void ParseRiverHydrology() { int count = 0; HtmlNodeCollection anchors = this.riverDoc.DocumentNode.SelectNodes(@"/table/tr"); foreach (HtmlNode hn in anchors) { RiverHydrology rh = new RiverHydrology(); //解析站名 HtmlNode nodeStationName = hn.SelectNodes("td/a/font").FindFirst("font"); rh.StationName = UnicodeToString(nodeStationName.InnerText.Trim()); //解析站址 HtmlNode nodeAddress = hn.SelectNodes("td[2]").FindFirst("td"); rh.StationAddress = UnicodeToString(nodeAddress.InnerText.Trim()); //解析河名 HtmlNode nodeRiverName = hn.SelectNodes("td[3]").FindFirst("td"); rh.RiverName = UnicodeToString(nodeRiverName.InnerText.Trim()); //解析水位 HtmlNode nodeLevel = hn.SelectNodes("td[4]/font").FindFirst("font"); try { rh.WaterLevel = Convert.ToDouble(nodeLevel.InnerText.Trim()); } catch (Exception) { rh.WaterLevel = -1.0; } //解析流量 HtmlNode nodeFlow = hn.SelectNodes("td[5]").FindFirst("td"); try { rh.Flow = Convert.ToDouble(nodeFlow.InnerText.Trim()); } catch (Exception) { rh.Flow = -1.0; } //解析时间 HtmlNode nodeTime = hn.SelectNodes("td[6]").FindFirst("td"); string timeStr = nodeTime.InnerText.Trim(); rh.Time = StrToTime(timeStr); //解析警戒水位 HtmlNode nodeWarning = hn.SelectNodes("td[7]").FindFirst("td"); try { rh.WarningWaterLevel = Convert.ToDouble(nodeWarning.InnerText.Replace(" ", "").Trim()); } catch (Exception) { rh.WarningWaterLevel = -1.0; } listRiver.Add(rh); count++; } LogHelper.WriteLog(typeof(HtmlParse), "重点水情数据爬取解析成功,河道站:" + count + "条"); }