C# 使用AngleSharp 爬蟲圖片


AngleSharp 簡介

AngleSharp是基於.NET(C#)開發的專門解析HTML源碼的DLL組件。根據HTML的DOM結構操作HTML,整個DOM已傳輸到邏輯類結構中。這種結構可以更好的操作DOM元素。

AngleSharp還帶來了一些非常有用的擴展方法,它們跟jQuery和JavaScript中的用法類似。 使用命名空間AngleSharp可以訪問Html,Css,Attr或Text等方法。 這些方法向給定的IHtmlCollection一樣在給定的IEnumerable <IElement>上運行。 目的很簡單:輕松修改給定的DOM元素。此插件最大的優勢:支持輸出JavascriptLinq語法、IDClass選擇器、動態添加節點。

 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;

效果如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM