一、Anglesharp简介
Anglesharp是一个纯C#的HTML解析器,提供一个友好的API,帮助用户在.NET平台中解析和操作HTML文档。与其他.NET平台的HTML解析器相比,Anglesharp的语法更加简单易懂,使用也更加方便,支持从根本上修改DOM。
如果你需要获取一个HTML文件中某个DOM元素的内容或者属性,或者需要在服务器端分析HTML文档并做进一步处理,Anglesharp将是一个不错的选择。
二、在项目中引用Anglesharp
在使用Anglesharp之前,需要将其添加到项目中。你可以通过NuGet下载Anglesharp包,也可以通过官方GitHub下载源代码并使用。这里我们使用NuGet进行安装。
Install-Package AngleSharp
三、从字符串解析HTML文档
在解析HTML文档之前,我们需要先创建一个Document对象,然后将HTML文件作为参数传入,则会返回DOM树的根节点HTMLHtmlElement。下面是一个解析HTML字符串并获取页面title的代码示例。
using AngleSharp;
// 解析HTML字符串,并获取title
var html = @"<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<p>This is a sample paragraph.</p>
</body>
</html>";
var parser = new HtmlParser();
var doc = parser.ParseDocument(html);
var title = doc.Title;
在以上示例中,我们首先定义了一个HTML字符串,然后使用HtmlParser解析该字符串,并获取Document对象。最后通过doc.Title获取页面的title,其值为”Hello World”。
四、从文件解析HTML文档
除了从字符串解析HTML文档,我们还可以从文件中解析HTML文档。使用File.ReadAllText从文本文件中读取HTML代码,然后用HtmlParser进行解析。
using AngleSharp; using System.IO; // 从文件中解析HTML文档,并获取页面title var filePath = @"D:\html\test.html"; var html = File.ReadAllText(filePath); var parser = new HtmlParser(); var doc = parser.ParseDocument(html); var title = doc.Title;
在以上示例中,我们通过File.ReadAllText从D:\html\test.html路径读取HTML代码,然后用HtmlParser进行解析,并获取页面title。
五、选择器操作
选择器是用于选择DOM树中特定元素的一种方法,可以帮助我们对HTML文档进行更加灵活的操作。在Anglesharp中,内置了CSS选择器,支持多种类型的选择器。
1. 获取所有p元素
using AngleSharp;
using AngleSharp.Dom;
using System.Linq;
// 获取HTML文档中所有的p元素
var html = @"<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<p>This is a sample paragraph 1.</p>
<p>This is a sample paragraph 2.</p>
<p>This is a sample paragraph 3.</p>
</body>
</html>";
var parser = new HtmlParser();
var doc = parser.ParseDocument(html);
var pList = doc.QuerySelectorAll("p").ToArray();
在以上示例中,我们使用doc.QuerySelectorAll(“p”)获取页面中所有p元素,并通过ToArray()方法将其转换为数组。
2. 获取特定id元素
using AngleSharp;
using AngleSharp.Dom;
using System.Linq;
// 获取HTML文档中id为"test"的元素
var html = @"<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<p id=""test"">This is a sample paragraph.</p>
</body>
</html>";
var parser = new HtmlParser();
var doc = parser.ParseDocument(html);
var element = doc.QuerySelector("#test");
在以上示例中,我们使用doc.QuerySelector(“#test”)查找页面中id为”test”的元素,并将其返回给element对象。
六、DOM操作
1. 创建元素
在Anglesharp中,可以使用CreateElement方法创建DOM元素。
using AngleSharp;
using AngleSharp.Dom;
using AngleSharp.Html.Dom;
// 创建一个新的p元素,并设置其内容和属性
var parser = new HtmlParser();
var doc = parser.ParseDocument("<html></html>");
var p = doc.CreateElement("p");
p.TextContent = "This is a new paragraph.";
p.ClassName = "my-class";
在以上示例中,我们使用doc.CreateElement<IHtmlParagraphElement>(“p”)创建了一个新的p元素,并定义了其内容和类别。
2. 修改元素
在Anglesharp中,我们可以很方便地修改DOM元素,例如修改HTML标签的属性。
using AngleSharp;
using AngleSharp.Dom;
using AngleSharp.Html.Dom;
// 创建一个包含img元素的文档,并修改其属性
var parser = new HtmlParser();
var doc = parser.ParseDocument(@"<html>
<head>
<title>Hello World</title>
</head>
<body>
<img src=""test.jpg"" alt=""test image"" />
</body>
</html>");
var img = doc.QuerySelector("img");
img.SetAttribute("src", "new-test.jpg");
img.SetAttribute("alt", "new test image");
在以上示例中,我们使用SetAttribute方法修改img元素的封装属性(src和alt)。
3. 删除元素
在Anglesharp中,我们也可以删除DOM元素。例如下面的示例演示了如何删除文档中所有的p元素。
using AngleSharp;
using AngleSharp.Dom;
using AngleSharp.Html.Dom;
using System.Linq;
// 删除所有p元素
var parser = new HtmlParser();
var doc = parser.ParseDocument(@"<html>
<head>
<title>Hello World</title>
</head>
<body>
<p>This is a sample paragraph 1.</p>
<p>This is a sample paragraph 2.</p>
<p>This is a sample paragraph 3.</p>
</body>
</html>");
var pList = doc.QuerySelectorAll("p").ToArray();
foreach (var p in pList)
{
p.Remove();
}
在以上示例中,我们使用doc.QuerySelectorAll(“p”)获取页面中所有p元素,并通过循环遍历每一个p元素,并使用Remove()方法删除它们。
结语
本文介绍了如何使用Anglesharp解析和操作HTML文档,包括从字符串和文件中解析HTML、选择器操作以及DOM操作等。Anglesharp不仅提供了简单易懂的语法和方便快捷的API,还能够在.NET平台中提供高效且灵活的HTML解析支持。希望本文能够对读者理解和使用Anglesharp有所帮助。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/196467.html
微信扫一扫
支付宝扫一扫