码迷,mamicode.com
首页 > Web开发 > 详细

HtmlAgilityPack解析html

时间:2017-12-22 14:57:59      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:rri   方法   path   ret   stat   分享图片   logs   sch   write   

参考文档:https://www.cnblogs.com/asxinyu/p/CSharp_HtmlAgilityPack_XPath_Weather_Data.html#_label0

HtmlAgilityPack是一个开源的解析HTML元素的类库,最大的特点是可以通过XPath来解析HMTL

下载地址如下:http://htmlagilitypack.codeplex.com/

 

XPath教程:http://www.w3school.com.cn/xpath/index.asp

 

XPath获取方法:

技术分享图片

 

 官方API:http://html-agility-pack.net/parser

技术分享图片
        public ActionResult Index()
        {
            //爬取天气预报
            HtmlWeb htmlWeb = new HtmlWeb();
            string url = "http://www.tianqihoubao.com/lishi/taizhou/month/201712.html";
            htmlWeb.OverrideEncoding = Encoding.GetEncoding("gb2312");  //解决乱码问题
            HtmlAgilityPack.HtmlDocument document = htmlWeb.Load(url);
            var res = document.DocumentNode.SelectSingleNode(@"//*[@id=‘content‘]/table");
            List<WeatherReport> weatherReports = new List<WeatherReport>();
            if(res!=null)
            {
                var list = res.SelectNodes(@"tr");
                list.RemoveAt(0);//移除第一行,是表头
                // 遍历每一行,获取日期,以及天气状况等信息
            
                foreach (var item in list)
                {

                    var dd = item.SelectNodes(@"td");
                    //日期 -  - 气温 - 风力风向
                    if (dd.Count != 4) continue;
                    //获取当前行日期
                    var date1 = dd[0].InnerText.Replace("\r\n", "").Replace(" ", "").Trim();
                    //获取当前行天气状况
                    var tq = dd[1].InnerText.Replace("\r\n", "").Replace(" ", "").Trim();
                    //获取当前行气温
                    var qw = dd[2].InnerText.Replace("\r\n", "").Replace(" ", "").Trim();
                    //获取当前行风力风向
                    var fx = dd[3].InnerText.Replace("\r\n", "").Replace(" ", "").Trim();
                    //输出
                    Console.WriteLine("{0}:{1},{2},{3}", date1, tq, qw, fx);
                    WeatherReport weatherReport = new WeatherReport {
                        Date = date1,
                        State = tq,
                        Temperature = qw,
                        Wind=fx
                    };
                    weatherReports.Add(weatherReport);
                }
            }
            return View(weatherReports);
        }
View Code

 

HtmlAgilityPack解析html

标签:rri   方法   path   ret   stat   分享图片   logs   sch   write   

原文地址:http://www.cnblogs.com/liandy0906/p/8085558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!