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

使用Html Agility Pack快速解析Html内容

时间:2019-01-13 11:39:32      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:enc   tps   flat   default   spl   oid   文件流   pre   form   

Html Agility Pack 是一个开源的.NET 方案HTML解析器。

开源地址:https://github.com/zzzprojects/html-agility-pack

用法:vs上通过Nuget搜索Html Agility Pack并安装

示例代码1:

        /// <summary>
        /// 获取网页内容
        /// </summary>
        /// <returns></returns>
        private static string GetHtml()
        {
            string html = string.Empty;
            string url = "http://quote.eastmoney.com/stocklist.html";

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(url);

                //关键代码1:设置请求头采用GZip和deflate两种压缩算法
                client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
                var response = client.GetAsync(url).Result;

                var fileStream = response.Content.ReadAsStreamAsync().Result;

                //关键代码2:对文件流采用GZip算法解压
                GZipStream gzip = new GZipStream(fileStream, CompressionMode.Decompress);

                using (StreamReader reader = new StreamReader(gzip, Encoding.GetEncoding("gb2312")))//中文编码处理
                {
                    html = reader.ReadToEnd();
                    //File.WriteAllText(@"C:\stock.html", reader.ReadToEnd(), Encoding.Default);
                }
            }

            return html;
        }

示例代码2:

        static void Main(string[] args)
        {
            string html= GetHtml();

            var doc = new HtmlDocument();
            doc.LoadHtml(html);

            //查找dom节点div的Id为quotesearch下所有ul下的li下的所有a节点
            var nodes = doc.DocumentNode.SelectNodes("//div[@id=‘quotesearch‘]/ul/li/a");
            foreach (var node in nodes)
            {
                var arrays=node.InnerText.Split(();
                Console.WriteLine(string.Format("股票名称:{0},股票代码:{1}", arrays[0], arrays[1].Replace(")","")));
            }

            //File.WriteAllText(@"C:\stock.html", matches.ToString(), Encoding.Default);

            Console.ReadKey();
        }

 

使用Html Agility Pack快速解析Html内容

标签:enc   tps   flat   default   spl   oid   文件流   pre   form   

原文地址:https://www.cnblogs.com/wgx0428/p/10262040.html

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