以下是详细的“C#使用AngleSharp库解析html文档”的攻略。
AngleSharp库介绍
AngleSharp是一个现代化的、标准兼容的HTML/XML解析器。它通过实现W3C的DOM、CSS、和HTML标准,来提供更为完善的浏览器级别的HTML解析功能,比如解析HTML文档、提取DOM节点、执行Javascript代码等等。
AngleSharp这个库支持常见的Web标准,例如HTML、CSS、SVG等,并且能够以流形式加载文档,这意味着我们可以使用像HttpClient之类的现有库来实现对Web服务进行数据提取的功能。
安装AngleSharp
首先,我们需要安装AngleSharp库,我们可以通过NuGet来完成相关的操作,通过Visual Studio的NuGet Package Manager来搜索AngleSharp即可。
安装示例:
Install-Package AngleSharp
AngleSharp库的基本用法
以下是一个基本示例,用于解析HTML字符串并提取其中的标题:
using System;
using AngleSharp.Html.Dom;
using AngleSharp.Html.Parser;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string html = "<html><head><title>Hello AngleSharp</title></head><body><p>Beautiful Soup</p></body></html>";
var htmlParser = new HtmlParser();
IHtmlDocument document = htmlParser.ParseDocument(html);
string title = document.Title;
Console.WriteLine(title);
}
}
}
运行上面代码将输出标题Hello AngleSharp
。
示例1:从HTML文件中提取数据
以下示例演示了如何使用AngleSharp从一个HTML文件读取数据并提取DOM节点。
using System;
using System.IO;
using AngleSharp.Html.Dom;
using AngleSharp.Html.Parser;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string path = "test.html";
var parser = new HtmlParser();
using (var stream = File.OpenRead(path))
{
IHtmlDocument doc = parser.ParseDocument(stream);
var table = doc.QuerySelector("table");
var rows = table.QuerySelectorAll("tr");
foreach (var row in rows)
{
var tds = row.QuerySelectorAll("td");
foreach (var td in tds)
{
Console.WriteLine(td.TextContent.Trim());
}
}
}
}
}
}
上述代码将读取当前目录下的test.html文件,从中提取table中的数据并输出。具体来说,我们使用QuerySelector方法在HTML文档中查找标签;QuerySelectorAll方法将返回一个NodeList,该列表包含所有与选择器匹配的节点。最后,我们使用TextContent属性来获取节点文本。
示例2:从Web页面中提取数据
除了从HTML文件中提取数据,我们也可以从Web页面中提取数据。下面的示例演示了如何使用AngleSharp从Web页面中读取数据并提取DOM节点。
using System;
using System.Threading.Tasks;
using AngleSharp.Html.Dom;
using AngleSharp.Html.Parser;
namespace ConsoleApp1
{
class Program
{
static async Task Main(string[] args)
{
var url = "https://www.baidu.com/"; // 网站地址
var config = Configuration.Default.WithDefaultLoader();
using (var context = BrowsingContext.New(config))
{
//加载网站
var document = await context.OpenAsync(url);
var title = document.Title;
Console.WriteLine(title);
var elements = document.QuerySelectorAll(".s-top-wrap a");
foreach (var element in elements)
{
Console.WriteLine(element.TextContent.Trim());
}
}
}
}
}
上述代码将打开默认网络配置,并加载百度首页。我们使用了CSS选择器来在DOM中查找元素,通过打印元素的TextContent属性来输出网站上的数据。
到此为止,我们已经成功使用AngleSharp库解析HTML文档,并在国内、国外两种情况下提取数据示例,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用AngleSharp库解析html文档 - Python技术站