AngleSharp是基於.NET(C#)開發的專門解析HTML源碼的DLL組件。根據HTML的DOM結構操做HTML,整個DOM已傳輸到邏輯類結構中。這種結構能夠更好的操做DOM元素。html
AngleSharp還帶來了一些很是有用的擴展方法,它們跟jQuery和JavaScript中的用法相似。 使用命名空間AngleSharp能夠訪問Html,Css,Attr或Text等方法。 這些方法向給定的IHtmlCollection同樣在給定的IEnumerable <IElement>上運行。 目的很簡單:輕鬆修改給定的DOM元素。此插件最大的優點:支持輸出Javascript、Linq語法、ID和Class選擇器、動態添加節點。前端
AngleSharp是個開源項目, 主頁地址。git
參考github
http://www.cnblogs.com/pandait/p/AngleSharp.html測試
http://www.javashuo.com/article/p-ctfjwxjo-eh.htmlspa
將AngleSharp整合到您的項目中最簡單的方法是使用NuGet。您能夠經過打開軟件包管理器控制檯(PM)並輸入如下語句來安裝AngleSharp:插件
Install-Package AngleSharp
您也能夠使用圖形庫包管理器(「管理解決方案的NuGet包」)。在官方的NuGet在線源中搜索「AngleSharp」將會找到這個庫。3d
//建立一個(可重用)解析器前端 var parser = new HtmlParser(); //html DOM節點 var source = "<h1>Some example source</h1><p>This is a paragraph element"; //解析源文件 var document = parser.Parse(source); //建立P標籤 var p = document.CreateElement("p"); p.TextContent = "This is another paragraph."; //添加到DOM document.Body.AppendChild(p); //返回完整html var html = document.DocumentElement.OuterHtml; ViewData["html"] = html;
效果展現rest
給<li> 標籤添加自定義屬性code
var parser = new HtmlParser(); //爲如下源代碼生成HTML DOM var document = parser.Parse("<ul><li>First element<li>Second element<li>third<li class=bla>Last"); //獲取全部li元素並將test屬性設置爲值測試 var elements = document.QuerySelectorAll("li").Attr("test", "test"); //元素仍然包含全部li元素 ViewData["html"] = document.DocumentElement.OuterHtml;
效果展現
新建個Belle類用於保存獲取的圖片信息
/// <summary> /// 解析html /// </summary> public class Belle { /// <summary> /// 標題 /// </summary> public string Title { get; set; } /// <summary> /// 圖片地址 /// </summary> public string ImageUrl { get; set; } }
獲取html並解析
// 設置配置以支持文檔加載 var config = Configuration.Default.WithDefaultLoader(); // 豆瓣地址 var address = "https://www.dbmeinv.com/dbgroup/show.htm?cid=4"; // 請求豆辨網 var document = BrowsingContext.New(config).OpenAsync(address); // 根據class獲取html元素 var cells = document.Result.QuerySelectorAll(".panel-body li"); // We are only interested in the text - select it with LINQ List<Belle> list = new List<Belle>(); foreach (var item in cells) { var belle = new Belle
{ Title= item.QuerySelector("img").GetAttribute("title"), ImageUrl= item.QuerySelector("img").GetAttribute("src") }; list.Add(belle);
}
ViewData["html"] = list;
效果以下