C#使用AngleSharp库解析html文档_第1页
C#使用AngleSharp库解析html文档_第2页
C#使用AngleSharp库解析html文档_第3页
C#使用AngleSharp库解析html文档_第4页
C#使用AngleSharp库解析html文档_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C#使用AngleSharp库解析html文档AngleSharp:/AngleSharp/AngleSharp

AngleSharp是一个.NET库,使您能够解析基于尖括号的超文本,例如HTML,SVG和MathML,该库还支持未经验证的XML,AngleSharp的一个重要方面是CSS也可以解析。

AngleSharp与类似的库(例如HtmlAgilityPack)相比的优势在于:

公开的DOM使用的是W3C官方指定的API,即,甚至在AngleSharp中也可以使用querySelectorAll之类的东西。解析器还使用HTML5.1规范,该规范定义了错误处理和元素校正。

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

官方实例:/AngleSharp/AngleSharp.Samples

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

varconfig=Configuration.Default.WithDefaultLoader();

varaddress="/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="

h1Someexamplesource/h1

pThisisaparagraphelement/p

//解析源文件

vardocument=parser.Parse(source);

//创建P标签

varp=document.CreateElement("p");

p.TextContent="Thisisanotherparagraph.";

//添加到DOM

document.Body.AppendChild(p);

//返回完整html

varhtml=document.DocumentElement.OuterHtml;

ViewData["html"]=html;

效果展示

2、更改标签属性

给标签添加自定义属性

varparser=newHtmlParser();

//为以下源代码生成HTMLDOM

vardocument=parser.Parse("

liFirstelement/li

liSecondelement/li

lithird/li

liLast/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="/dbgroup/show.htmcid=4";

//请求豆辨网

vardocument=BrowsingContext.New(config).OpenAsync(address);

//根据class获取html元素

varcells=document.Result.QuerySelectorAll(".panel-bodyli");

//Weareonlyinterestedinthetext-selectitwithLINQ

Listlist=newList();

foreach(varitemincells)

varbelle=newBelle

Title=item.QuerySelector("img").GetAttribute(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论