Example #1
0
        //解析大江大河实时水情
        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("&nbsp", "").Trim());
                }
                catch (Exception)
                {
                    rh.WarningWaterLevel = -1.0;
                }

                listBigRiver.Add(rh);
                count++;
            }

            LogHelper.WriteLog(typeof(HtmlParse), "大江大河水情数据爬取解析成功,共:" + count + "条");
        }
Example #2
0
        //解析全国重点河道站实时水情
        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("&nbsp", "").Trim());
                }
                catch (Exception)
                {
                    rh.WarningWaterLevel = -1.0;
                }

                listRiver.Add(rh);
                count++;
            }
            LogHelper.WriteLog(typeof(HtmlParse), "重点水情数据爬取解析成功,河道站:" + count + "条");
        }