C#如何使用AngleSharp库解析html文档(anglesharp,html,开发技术)

时间:2024-04-29 20:01:53 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

一、简介

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

  • 公开的DOM使用的是W3C官方指定的API,即,甚至在AngleSharp中也可以使用querySelectorAll之类的东西。

  • 解析器还使用HTML 5.1规范,该规范定义了错误处理和元素校正。

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

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

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

varconfig=Configuration.Default.WithDefaultLoader();varaddress="https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes";varcontext=BrowsingContext.New(config);vardocument=awaitcontext.OpenAsync(address);varcellSelector="tr.veventtd:nth-child(3)";varcells=document.QuerySelectorAll(cellSelector);vartitles=cells.Select(m=>m.TextContent);

二、使用AngleSharp生成自动缩进格式化的html方法

1、操作DOM示例

//创建一个(可重用)解析器前端varparser=newHtmlParser();//htmlDOM节点varsource="<h2>Someexamplesource</h2><p>Thisisaparagraphelement</p>";//解析源文件vardocument=parser.Parse(source);//创建P标签varp=document.CreateElement("p");p.TextContent="Thisisanotherparagraph.";//添加到DOMdocument.Body.AppendChild(p);//返回完整htmlvarhtml=document.DocumentElement.OuterHtml;ViewData["html"]=html;

效果展示

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

2、更改标签属性

给标签添加自定义属性

varparser=newHtmlParser();//为以下源代码生成HTMLDOMvardocument=parser.Parse("<ul><li>Firstelement</li><li>Secondelement</li><li>third</li><liclass='bla'>Last</li></ul>");//获取所有li元素并将test属性设置为值测试varelements=document.QuerySelectorAll("li").Attr("test","test");//元素仍然包含所有li元素ViewData["html"]=document.DocumentElement.OuterHtml;

效果展示

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

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

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

varparser=newHtmlParser();vardocument=parser.ParseDocument(text);using(varwriter=newStringWriter()){document.ToHtml(writer,newPrettyMarkupFormatter{Indentation="\t",NewLine="\n"});varindentedText=writer.ToString();}

4、使用AngleSharp下载获取html代码

varrequester=newDefaultHttpRequester("Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3497.100Safari/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");varcontext=BrowsingContext.New(Configuration.Default.WithLocaleBasedEncoding().WithDefaultLoader().WithDefaultCookies().With(requester));//根据虚拟请求/响应模式创建文档vardocument=context.OpenAsync(url).Result;using(varwriter=newStringWriter()){document.ToHtml(writer,newPrettyMarkupFormatter{Indentation="\t",NewLine="\n"});varindentedText=writer.ToString();}

5、爬取豆瓣美女图片

新建一个Belle类用于保存获取的图片信息

//////解析html///publicclassBelle{//////标题///publicstringTitle{get;set;}//////图片地址///publicstringImageUrl{get;set;}}

获取html并解析

//设置配置以支持文档加载varconfig=Configuration.Default.WithDefaultLoader();//豆瓣地址varaddress="https://www.dbmeinv.com/dbgroup/show.htm?cid=4";//请求豆辨网vardocument=BrowsingContext.New(config).OpenAsync(address);//根据class获取html元素varcells=document.Result.QuerySelectorAll(".panel-bodyli");//Weareonlyinterestedinthetext-selectitwithLINQListlist=newList();foreach(varitemincells){varbelle=newBelle{Title=item.QuerySelector("img").GetAttribute("title"),ImageUrl=item.QuerySelector("img").GetAttribute("src")};list.Add(belle);}ViewData["html"]=list;
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:C#如何使用AngleSharp库解析html文档的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:JavaScript仿小米如何实现球体分解动画下一篇:

18 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18