C#如何使用AngleSharp库解析html文档
导读:本文共2826字符,通常情况下阅读需要9分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 一、简介AngleSharp是一个.NET库,使您能够解析基于尖括号的超文本,例如HTML,SVG和MathML,该库还支持未经验证的XML,AngleSharp的一个重要方面是CSS也可以解析。AngleSharp与类似的库(例如HtmlAgilityPack)相比的优势在于:公开的DOM使用的是W3C官方指定的API,即,甚至在AngleSharp中也可以使... ...
目录
(为您整理了一些要点),点击可以直达。一、简介
AngleSharp是一个.NET库,使您能够解析基于尖括号的超文本,例如HTML,SVG和MathML,该库还支持未经验证的XML,AngleSharp的一个重要方面是CSS也可以解析。
AngleSharp与类似的库(例如HtmlAgilityPack)相比的优势在于:
公开的DOM使用的是W3C官方指定的API,即,甚至在AngleSharp中也可以使用querySelectorAll之类的东西。
解析器还使用HTML 5.1规范,该规范定义了错误处理和元素校正。
AngleSharp库专注于标准合规性,交互性和可扩展性。因此,它为使用C#的Web开发人员提供了从在任何现代浏览器中使用DOM所获得的所有可能性。
这个简单的示例将使用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;
效果展示
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;
效果展示
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文档的详细内容,希望对您有所帮助,信息来源于网络。