AngleSharp 簡介
AngleSharp是基於.NET(C#)開發的專門解析HTML源碼的DLL組件。根據HTML的DOM結構操作HTML,整個DOM已傳輸到邏輯類結構中。這種結構可以更好的操作DOM元素。
AngleSharp還帶來了一些非常有用的擴展方法,它們跟jQuery和JavaScript中的用法類似。 使用命名空間AngleSharp可以訪問Html,Css,Attr或Text等方法。 這些方法向給定的IHtmlCollection一樣在給定的IEnumerable <IElement>上運行。 目的很簡單:輕松修改給定的DOM元素。此插件最大的優勢:支持輸出Javascript、Linq語法、ID和Class選擇器、動態添加節點。
AngleSharp是個開源項目, 主頁地址。
參考
http://www.cnblogs.com/pandait/p/AngleSharp.html
https://www.cnblogs.com/liguobao/p/6130121.html
通過NuGet獲取AngleSharp
將AngleSharp整合到您的項目中最簡單的方法是使用NuGet。您可以通過打開軟件包管理器控制台(PM)並輸入以下語句來安裝AngleSharp:
Install-Package AngleSharp
您也可以使用圖形庫包管理器(“管理解決方案的NuGet包”)。在官方的NuGet在線源中搜索“AngleSharp”將會找到這個庫。
操作DOM示例
//創建一個(可重用)解析器前端 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;
效果展示
更改標簽屬性
給<li> 標簽添加自定義屬性
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;
效果如下