最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用AngleSharp庫解析html文檔

 更新時間:2022年06月14日 11:06:21   作者:springsnow  
這篇文章介紹了C#使用AngleSharp庫解析html文檔的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、簡介

AngleSharp:https://github.com/AngleSharp/AngleSharp

AngleSharp是一個.NET庫,使您能夠解析基于尖括號的超文本,例如HTML,SVG和MathML,該庫還支持未經(jīng)驗證的XML,AngleSharp的一個重要方面是CSS也可以解析。 
AngleSharp與類似的庫(例如HtmlAgilityPack)相比的優(yōu)勢在于:

  • 公開的DOM使用的是W3C官方指定的API,即,甚至在AngleSharp中也可以使用querySelectorAll之類的東西。
  • 解析器還使用HTML 5.1規(guī)范,該規(guī)范定義了錯誤處理和元素校正。

AngleSharp庫專注于標(biāo)準(zhǔn)合規(guī)性,交互性和可擴展性。因此,它為使用C#的Web開發(fā)人員提供了從在任何現(xiàn)代瀏覽器中使用DOM所獲得的所有可能性。

image

官方實例:https://github.com/AngleSharp/AngleSharp.Samples 
這個簡單的示例將使用Wikipedia的網(wǎng)站進(jìn)行數(shù)據(jù)檢索。

var config = Configuration.Default.WithDefaultLoader();
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes";
var context = BrowsingContext.New(config);
var document = await context.OpenAsync(address);
var cellSelector = "tr.vevent td:nth-child(3)";
var cells = document.QuerySelectorAll(cellSelector);
var titles = cells.Select(m => m.TextContent);

二、使用AngleSharp生成自動縮進(jìn)格式化的html方法

1、操作DOM示例

//創(chuàng)建一個(可重用)解析器前端
var parser = new HtmlParser();
//html DOM節(jié)點
var source = "
<h1>Some example source</h1>
<p>This is a paragraph element</p>
";

//解析源文件
var document = parser.Parse(source);
//創(chuàng)建P標(biāo)簽
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;

效果展示

2、更改標(biāo)簽屬性

給標(biāo)簽添加自定義屬性

var parser = new HtmlParser();
 //為以下源代碼生成HTML DOM
var document = parser.Parse("
<ul>
<li>First element</li>
<li>Second element</li>
<li>third</li>
<li class='bla'>Last</li>
</ul>
");
//獲取所有l(wèi)i元素并將test屬性設(shè)置為值測試
var elements = document.QuerySelectorAll("li").Attr("test", "test");
 //元素仍然包含所有l(wèi)i元素
ViewData["html"] = document.DocumentElement.OuterHtml;

效果展示

3、使用AngleSharp生成html代碼自動縮進(jìn)格式化

var parser = new HtmlParser();
var document = parser.ParseDocument(text);
using (var writer = new StringWriter())
{
    document.ToHtml(writer, new PrettyMarkupFormatter
                            {
                                Indentation = "\t",
                                NewLine = "\n"
                            });
    var indentedText = writer.ToString();
}

4、使用AngleSharp下載獲取html代碼

var requester = new DefaultHttpRequester("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36");
requester.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
requester.Headers.Add("Referer", "");
requester.Headers.Add("Accept-Language", "zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3");
var context = BrowsingContext.New(Configuration.Default.WithLocaleBasedEncoding().WithDefaultLoader().WithDefaultCookies().With(requester));
//根據(jù)虛擬請求/響應(yīng)模式創(chuàng)建文檔
var document = context.OpenAsync(url).Result;
using (var writer = new StringWriter())
{
    document.ToHtml(writer, new PrettyMarkupFormatter
                            {
                                Indentation = "\t",
                                NewLine = "\n"
                            });
    var indentedText = writer.ToString();
}

5、爬取豆瓣美女圖片

新建一個Belle類用于保存獲取的圖片信息

/// 
/// 解析html
/// 
public class Belle
{
        /// 
        /// 標(biāo)題
        /// 
        public string Title { get; set; }
        /// 
        /// 圖片地址
        /// 
        public string ImageUrl { get; set; }
}

獲取html并解析

// 設(shè)置配置以支持文檔加載
var config = Configuration.Default.WithDefaultLoader();
// 豆瓣地址
var address = "https://www.dbmeinv.com/dbgroup/show.htm?cid=4";
// 請求豆辨網(wǎng)
var document =  BrowsingContext.New(config).OpenAsync(address);
// 根據(jù)class獲取html元素
var cells = document.Result.QuerySelectorAll(".panel-body li");
// We are only interested in the text - select it with LINQ
List list = new List();
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;

到此這篇關(guān)于C#使用AngleSharp庫解析html文檔的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#加解密之AES算法的實現(xiàn)

    C#加解密之AES算法的實現(xiàn)

    一般我們來說呢,對于加密,我們分為可逆和不可逆??赡婕用苡挚煞譃閷ΨQ加密(AES、DES等)和非對稱加密(RSA),還有就是一些編碼加密等(BASE64);不可逆的呢,大部分又都稱為摘要算法(MD5、SHA)。本文將用C#實現(xiàn)AES算法,需要的可以參考一下
    2022-08-08
  • 淺談C#下winform和JS的互相調(diào)用和傳參(webbrowser)

    淺談C#下winform和JS的互相調(diào)用和傳參(webbrowser)

    下面小編就為大家?guī)硪黄獪\談C#下winform和JS的互相調(diào)用和傳參(webbrowser)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C#實現(xiàn)一階卡爾曼濾波算法的示例代碼

    C#實現(xiàn)一階卡爾曼濾波算法的示例代碼

    這篇文章主要介紹了C#實現(xiàn)一階卡爾曼濾波算法的示例代碼,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • 如何在C#中調(diào)用COM組件

    如何在C#中調(diào)用COM組件

    這篇文章主要介紹了如何在C#中調(diào)用COM組件,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#延時關(guān)閉電腦、取消關(guān)閉電腦操作方法(需管理員權(quán)限)

    C#延時關(guān)閉電腦、取消關(guān)閉電腦操作方法(需管理員權(quán)限)

    在C#中,如果想實現(xiàn)延時關(guān)閉電腦和取消關(guān)閉的功能,可以有多種方法,下面給大家分享C#延時關(guān)閉電腦、取消關(guān)閉電腦操作方法,感興趣的朋友一起看看吧
    2024-06-06
  • C# 腳本引擎RulesEngine的使用詳解

    C# 腳本引擎RulesEngine的使用詳解

    這篇文章主要介紹了C# 腳本引擎RulesEngine的使用方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-02-02
  • Unity命令行打包WebGL的示例代碼

    Unity命令行打包WebGL的示例代碼

    這篇文章主要介紹了Unity命令行打包WebGL的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#實現(xiàn)逐行讀取和寫入文件的方法

    C#實現(xiàn)逐行讀取和寫入文件的方法

    這篇文章給大家介紹了使用C#語言實現(xiàn)同樣的功能,即從輸入文件中讀取每行數(shù)據(jù),然后將每行字段組合成SQL插入腳本,然后逐行寫入另外一個空白文件中,感興趣的朋友可以參考下
    2024-01-01
  • C#自定義的方法實現(xiàn)堆棧類設(shè)計

    C#自定義的方法實現(xiàn)堆棧類設(shè)計

    這篇文章主要為大家詳細(xì)介紹了如何使用C#創(chuàng)建一個帶有Push方法和Clist類的CStack類,并如何在其中添加和遍歷堆棧數(shù)據(jù),感興趣的可以了解下
    2024-03-03
  • c# 獲取數(shù)據(jù)庫中所有表名稱的方法

    c# 獲取數(shù)據(jù)庫中所有表名稱的方法

    在很多情況下我們需要將指定的數(shù)據(jù)庫中的所有表都列出來。在使用c#進(jìn)行軟件開發(fā)時,我們有哪些方法可是實現(xiàn)這個目的呢?本人對此進(jìn)行概要的總結(jié),有以下6中方式可以實現(xiàn)這個目的。
    2010-02-02

最新評論

富蕴县| 汉阴县| 桐城市| 页游| 宿州市| 大同市| 龙岩市| 波密县| 革吉县| 罗定市| 潮安县| 英德市| 夏邑县| 包头市| 淮南市| 宜兰市| 怀来县| 文登市| 拜泉县| 泸水县| 仙桃市| 台东市| 汕头市| 达尔| 阳新县| 故城县| 揭西县| 安泽县| 潜江市| 江城| 舟山市| 象州县| 高碑店市| 福贡县| 健康| 长春市| 衡阳县| 丽江市| 金平| 沧源| 西宁市|