国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Html Agility Pack 解析Html

2019-11-17 02:32:32
字體:
來源:轉載
供稿:網友

Html Agility Pack 解析Html

Hello 好久不見 哈哈,今天給大家分享一個解析Html的類庫 Html Agility Pack。這個適用于想獲取某網頁里面的部分內容。今天就拿我的Csdn的博客列表來舉例。

打開頁面 用Firebug 找到文章列表的內容區域

如上面圖片 我們已經找到了想要的內容 在Html 中的位置

那么接下來 第一步就是獲取Html 然后 用Html Agility Pack 找出我們想要的東西

1. 獲網頁的Html

 1  #region 獲取文章列表 +GetHtml(string url) 2         /// <summary> 3         /// 獲取文章列表 Add shuaibi 2015-03-08 4         /// </summary> 5         /// <param name="url">頁面地址</param> 6         /// <returns>文章列表</returns> 7         public List<Model> GetHtml(string url) 8         { 9             var myWebClient = new WebClient();10             var myStream = myWebClient.OpenRead(url);11             var list = GetMessage(myStream); //這里調用的是下面的方法12             if (myStream != null) myStream.Close();13             return list;14         } 15         #endregion

2. 用Html Agility Pack 找出我們想要的東西

#region 處理文章信息 +GetMessage(Stream myStream)        /// <summary>        /// 處理文章信息 Add shuaibi 2015-03-08        /// </summary>        /// <param name="myStream">網頁的數據流</param>        /// <returns></returns>        PRivate static List<Model> GetMessage(Stream myStream)        {            var document = new HtmlDocument();            document.Load(myStream, Encoding.UTF8);            var rootNode = document.DocumentNode;            var messageNodeList = rootNode.SelectNodes(MessageListXPath);            return messageNodeList.Select(messageNode => HtmlNode.CreateNode(messageNode.OuterHtml)).Select(temp => new Model            {                Title = temp.SelectSingleNode(MessageNameXPath).InnerText,                 + temp.SelectSingleNode(MessageNameXPath).Attributes["href"].Value,                Content = temp.SelectSingleNode(MessageContxtXPath).InnerText,                Time = Convert.ToDateTime(temp.SelectSingleNode(MessageTimeXPath).InnerText),                ComeFrom = "csdn"            }).ToList();        }         #endregion

看完上面說完了方法和步驟 細心的你是不是發現的什么問題。哈哈,說一半天了都沒說這類庫怎么用,還有第二個方法里面那幾個變量是啥。

現在來說怎么獲取 Html Agility Pack 下載地址http://htmlagilitypack.codeplex.com/ 下載后解壓壓縮包就會發現HtmlAgilityPack.dll 在項目中右鍵添加引用就可以了

然后就是 幾個變量的問題了

1.下面這句話是 獲取全部 class為list_item article_item開始的div

/// <summary>        /// 獲取文章列表        /// </summary>        private const string MessageListXPath = "http://div[starts-with(@class,'list_item article_item')]";

2.下面這句話是 獲取上面獲取出來的集合里面每一項的標題

/// <summary>        /// 獲取標題 解釋: 第一個div,下的第一個div,下的第一個h1,下的第一個span,下的第一個a標簽        /// </summary>        private const string MessageNameXPath = "/div[1]/div[1]/h1[1]/span[1]/a[1]";

3.和上面一樣這個是獲取內容

/// <summary>        /// 獲取內容 解釋: 第一個div,下的第二個div        /// </summary>        private const string MessageContxtXPath = "/div[1]/div[2]";

4.這個是獲取發布時間

/// <summary>        /// 獲取時間 這個就是 獲取 第一個div,下的第3個div,下的span        /// </summary>        private const string MessageTimeXPath = "/div[1]/div[3]/span";

上面這些代碼都是 根據第一張圖片來的。

第二次發,說的不好請見諒。希望和大家成為盆友共同進步嘿嘿

最后附上實體內的代碼

using System;namespace MessageHelper{   public class Model    {       public string Title { get; set; } //標題       public string Content { get; set; } //內容       public string Href { get; set; } //文章鏈接       public string ComeFrom { get; set; } //來源       public DateTime Time { get; set; } //發布時間    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永登县| 安阳县| 确山县| 二手房| 泽普县| 白山市| 龙游县| 香格里拉县| 金沙县| 吉木萨尔县| 南江县| 吕梁市| 南川市| 辉县市| 定陶县| 英吉沙县| 汉阴县| 中方县| 衡阳县| 双鸭山市| 当阳市| 轮台县| 京山县| 五峰| 门头沟区| 崇州市| 宣城市| 都匀市| 玉溪市| 扎囊县| 剑河县| 夹江县| 万源市| 石阡县| 无极县| 乌鲁木齐市| 于都县| 桑日县| 马山县| 兰坪| 比如县|