.net下功能强大的HTML解析库HtmlAgilityPack,数据抓取必备
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
HtmlAgilityPack是一个.NET平台下的HTML解析库,它可以将HTML文本转换为DOM文档对象,方便我们对HTML文本进行操作和分析。HtmlAgilityPack支持XPath语法,可以通过XPath表达式来获取DOM节点,同时还提供了一些方便的API,可以实现HTML文本的解析、修改、生成等功能。本文将详细介绍HtmlAgilityPack的使用及使用方法。 一、HtmlAgilityPack的安装 HtmlAgilityPack是一个NuGet包,可以通过Visual Studio的NuGet包管理器来安装。具体步骤如下:
安装完成后,就可以在项目中使用HtmlAgilityPack了。 二、HtmlAgilityPack的使用
使用HtmlAgilityPack解析HTML文本的第一步是将HTML文本加载到一个HtmlDocument对象中。可以通过以下代码来实现: HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(htmlText); 其中,htmlText是要解析的HTML文本。LoadHtml方法会将HTML文本解析成一个DOM文档对象,并存储在doc对象中。
HtmlAgilityPack提供了一些方法来获取DOM节点,例如GetElementById、GetElementsByTagName、selectSingleNode、selectNodes等。这些方法都接受一个XPath表达式作为参数,用来指定要获取的节点。以下是一些示例代码: // 获取id为"content"的节点
HtmlNode contentNode = doc.GetElementById("content");
// 获取所有的a标签
HtmlNodeCollection aNodes = doc.DocumentNode.selectNodes("//a");
// 获取第一个p标签
HtmlNode pNode = doc.DocumentNode.selectSingleNode("//p");其中,XPath表达式的语法与XML的XPath语法相同。在这里不再详细介绍。
HtmlAgilityPack提供了一些方法来修改DOM节点,例如SetAttributeValue、InnerHtml、OuterHtml等。以下是一些示例代码: // 修改id为"content"的节点的class属性
contentNode.SetAttributeValue("class", "new-class");
// 修改第一个p标签的内容
pNode.InnerHtml = "这是新的内容";
// 修改第一个a标签的href属性
HtmlNode aNode = aNodes[0];
aNode.SetAttributeValue("href", "http://www.example.com");
HtmlAgilityPack还可以将DOM文档对象转换为HTML文本。可以通过以下代码来实现: string newHtmlText = doc.DocumentNode.OuterHtml; 其中,OuterHtml属性返回DOM文档对象的HTML文本表示。 三、HtmlAgilityPack的功能实例 下面将通过一些具体的实例来演示HtmlAgilityPack的使用方法。
以下代码演示了如何获取页面标题: HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlText);
HtmlNode titleNode = doc.DocumentNode.selectSingleNode("//title");
string title = titleNode.InnerHtml;其中,htmlText是要解析的HTML文本。首先,将HTML文本加载到一个HtmlDocument对象中。然后,通过XPath表达式“//title”获取页面标题节点。最后,通过InnerHtml属性获取标题的内容。
以下代码演示了如何获取页面中的所有图片: HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlText);
HtmlNodeCollection imgNodes = doc.DocumentNode.selectNodes("//img");
foreach (HtmlNode imgNode in imgNodes)
{
string src = imgNode.GetAttributeValue("src", "");
Console.WriteLine(src);
}首先,将HTML文本加载到一个HtmlDocument对象中。然后,通过XPath表达式“//img”获取所有图片节点。最后,遍历所有图片节点,获取每个节点的src属性。
以下代码演示了如何获取页面中的所有链接: HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlText);
HtmlNodeCollection aNodes = doc.DocumentNode.selectNodes("//a");
foreach (HtmlNode aNode in aNodes)
{
string href = aNode.GetAttributeValue("href", "");
Console.WriteLine(href);
}首先,将HTML文本加载到一个HtmlDocument对象中。然后,通过XPath表达式“//a”获取所有链接节点。最后,遍历所有链接节点,获取每个节点的href属性。
以下代码演示了如何将页面中的所有链接修改为指定的链接: HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlText);
HtmlNodeCollection aNodes = doc.DocumentNode.selectNodes("//a");
foreach (HtmlNode aNode in aNodes)
{
aNode.SetAttributeValue("href", "http://www.example.com");
}
string newHtmlText = doc.DocumentNode.OuterHtml;首先,将HTML文本加载到一个HtmlDocument对象中。然后,通过XPath表达式“//a”获取所有链接节点。最后,遍历所有链接节点,将它们的href属性修改为指定的链接。最后,通过OuterHtml属性将修改后的DOM文档对象转换为HTML文本。 本文介绍了HtmlAgilityPack的使用及使用方法。HtmlAgilityPack是一个功能强大、易用性高的HTML解析库,可以方便地对HTML文本进行操作和分析。通过本文的介绍,读者可以了解HtmlAgilityPack的基本用法,并可以根据需要自行扩展。 作者:架构师老卢 来源:https://www.cnblogs.com/hanbing81868164/p/17856515.html 该文章在 2023/11/29 9:27:37 编辑过 |
关键字查询
相关文章
正在查询... |