文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#如何使用AngleSharp库解析html文档

2023-07-02 09:36

关注

这篇“C#如何使用AngleSharp库解析html文档”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#如何使用AngleSharp库解析html文档”文章吧。

一、简介

AngleSharp是一个.NET库,使您能够解析基于尖括号的超文本,例如HTML,SVG和MathML,该库还支持未经验证的XML,AngleSharp的一个重要方面是CSS也可以解析。 
AngleSharp与类似的库(例如HtmlAgilityPack)相比的优势在于:

AngleSharp库专注于标准合规性,交互性和可扩展性。因此,它为使用C#的Web开发人员提供了从在任何现代浏览器中使用DOM所获得的所有可能性。

C#如何使用AngleSharp库解析html文档

这个简单的示例将使用Wikipedia的网站进行数据检索。

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生成自动缩进格式化的html方法

1、操作DOM示例

//创建一个(可重用)解析器前端var parser = new HtmlParser();//html DOM节点var source = "<h2>Some example source</h2><p>This is a paragraph element</p>";//解析源文件var document = parser.Parse(source);//创建P标签var p = document.CreateElement("p");p.TextContent = "This is another paragraph.";//添加到DOMdocument.Body.AppendChild(p);//返回完整htmlvar html = document.DocumentElement.OuterHtml;ViewData["html"] = html;

效果展示

C#如何使用AngleSharp库解析html文档

2、更改标签属性

给标签添加自定义属性

var parser = new HtmlParser(); //为以下源代码生成HTML DOMvar document = parser.Parse("<ul><li>First element</li><li>Second element</li><li>third</li><li class='bla'>Last</li></ul>");//获取所有li元素并将test属性设置为值测试var elements = document.QuerySelectorAll("li").Attr("test", "test"); //元素仍然包含所有li元素ViewData["html"] = document.DocumentElement.OuterHtml;

效果展示

C#如何使用AngleSharp库解析html文档

C#如何使用AngleSharp库解析html文档

3、使用AngleSharp生成html代码自动缩进格式化

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));//根据虚拟请求/响应模式创建文档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{        ///         /// 标题        ///         public string Title { get; set; }        ///         /// 图片地址        ///         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 LINQList 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;

以上就是关于“C#如何使用AngleSharp库解析html文档”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯