这篇“C#如何使用AngleSharp库解析html文档”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#如何使用AngleSharp库解析html文档”文章吧。
AngleSharp是一个.NET库,使您能够解析基于尖括号的超文本,例如HTML,SVG和MathML,该库还支持未经验证的XML,AngleSharp的一个重要方面是CSS也可以解析。
AngleSharp与类似的库(例如HtmlAgilityPack)相比的优势在于:
公开的DOM使用的是W3C官方指定的API,即,甚至在AngleSharp中也可以使用querySelectorAll之类的东西。
解析器还使用HTML 5.1规范,该规范定义了错误处理和元素校正。
AngleSharp库专注于标准合规性,交互性和可扩展性。因此,它为使用C#的Web开发人员提供了从在任何现代浏览器中使用DOM所获得的所有可能性。
这个简单的示例将使用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);
//创建一个(可重用)解析器前端 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."; //添加到DOM document.Body.AppendChild(p); //返回完整html var html = document.DocumentElement.OuterHtml; ViewData["html"] = html;
效果展示
给标签添加自定义属性
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> "); //获取所有li元素并将test属性设置为值测试 var elements = document.QuerySelectorAll("li").Attr("test", "test"); //元素仍然包含所有li元素 ViewData["html"] = document.DocumentElement.OuterHtml;
效果展示
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(); }
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(); }
新建一个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 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;
以上就是关于“C#如何使用AngleSharp库解析html文档”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。