HTML解析器
从字符串加载 Html
HtmlDocument.LoadHtml 方法从指定字符串加载 HTML 文档。
例子
以下示例从指定字符串加载 Html。
var html = @"<!DOCTYPE html>
<html>
<body>
<h1>This is <b>bold</b> heading</h1>
<p>This is <u>underlined</u> paragraph</p>
<h2>This is <i>italic</i> heading</h2>
</body>
</html> ";
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body");
Console.WriteLine(htmlBody.OuterHtml);
从 Web 加载 Html
HtmlWeb.Load 方法从 Internet 资源获取 HTML 文档。
例子
以下示例从 Web 加载 Html。
var html = @"https://html-agility-pack.net/";
HtmlWeb web = new HtmlWeb();
var htmlDoc = web.Load(html);
var node = htmlDoc.DocumentNode.SelectSingleNode("//head/title");
Console.WriteLine("Node Name: " + node.Name + "\n" + node.OuterHtml);
从文件加载 Html
HtmlDocument.Load 方法从文件加载 HTML 文档。
例子
以下示例从文件加载 Html。
// Description: HAP - Load (From File)
// Website: https://html-agility-pack.net/
// Run: https://dotnetfiddle.net/EsvZyg
// @nuget: HtmlAgilityPack
using System;
using System.Xml;
using HtmlAgilityPack;
public class Program
{
public static void Main()
{
SaveHtmlFile();
#region example
var path = @"test.html";
var doc = new HtmlDocument();
doc.Load(path);
var node = doc.DocumentNode.SelectSingleNode("//body");
Console.WriteLine(node.OuterHtml);
#endregion
}
private static void SaveHtmlFile()
{
var html =@"<!DOCTYPE html>
<html>
<body>
<h1>This is <b>bold</b> heading</h1>
<p>This is <u>underlined</u> paragraph</p>
<h2>This is <i>italic</i> heading</h2>
</body>
</html> ";
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
htmlDoc.Save("test.html");
}
}
HTML选择器
方法
| 名称 | 描述 |
|---|---|
| SelectNodes() | 选择与 XPath 表达式匹配的节点列表。 |
| SelectSingleNode(String) | 选择与 XPath 表达式匹配的第一个 XmlNode。 |
选择节点方法
选择与 HtmlAgilityPack.HtmlNode.XPath 表达式匹配的节点列表。
参数:
xpath:XPath 表达式。
返回:
包含与 HtmlAgilityPack.HtmlNode.XPath 查询匹配的节点集合的 HtmlAgilityPack.HtmlNodeCollection,如果没有节点与 XPath 表达式匹配,则返回 null。
例子
以下示例使用 SelectNodes 方法选择与 XPath 表达式匹配的第一个节点。
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
string name = htmlDoc.DocumentNode
.SelectNodes("//td/input")
.First()
.Attributes["value"].Value;
以下示例选择与 XPath 表达式匹配的所有节点。
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//td/input");
选择单节点方法
选择与 HtmlAgilityPack.HtmlNode.XPath 表达式匹配的第一个 HtmlNode。
参数:
xpath:XPath 表达式。可能不为空。
返回:
与 XPath 查询匹配的第一个 HtmlAgilityPack.HtmlNode,如果未找到匹配节点,则为空引用。
例子
以下示例使用 SelectNodes 方法选择与 XPath 表达式匹配的第一个节点。
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
string name = htmlDoc.DocumentNode
.SelectSingleNode("//td/input")
.Attributes["value"].Value;
HTML操作
操作允许您操作 HTML 文档。
属性
| 名称 | 描述 |
|---|---|
| InnerHtml | 获取或设置对象的开始标签和结束标签之间的 HTML。 |
| InnerText | 获取对象的开始标签和结束标签之间的文本。 |
| OuterHtml | 获取 HTML 格式的对象及其内容。 |
| ParentNode | 获取此节点的父节点(对于可以有父节点的节点)。 |
方法
| 名称 | 描述 |
|---|---|
| AppendChild() | 将指定节点添加到该节点的子节点列表的末尾。 |
| AppendChildren() | 将指定节点添加到该节点的子节点列表的末尾。 |
| Clone() | 创建节点的副本。 |
| CloneNode(Boolean) | 创建节点的副本。 |
| CloneNode(String) | 创建节点的副本并同时更改其名称。 |
| CloneNode(String, Boolean) | 创建节点的副本并同时更改其名称。 |
| CopyFrom(HtmlNode) | 创建节点及其下子树的副本。 |
| CopyFrom(HtmlNode, Boolean) | 创建节点的副本。 |
| CreateNode() | 从表示文本 HTML 的字符串创建 HTML 节点。 |
| InsertAfter() | 将指定的节点插入到指定的引用节点之后。 |
| InsertBefore | 将指定的节点插入到指定的引用节点之前。 |
| PrependChild | 将指定节点添加到该节点的子节点列表的开头。 |
| PrependChildren | 将指定的节点列表添加到该节点的子节点列表的开头。 |
| Remove | 从父集合中删除节点。 |
| RemoveAll | 删除当前节点的所有子节点和/或属性。 |
| RemoveAllChildren | 删除当前节点的所有子节点。 |
| RemoveChild(HtmlNode) | 删除指定的子节点。 |
| RemoveChild(HtmlNode, Boolean) | 删除指定的子节点。 |
| ReplaceChild() | 将子节点 oldChild 替换为 newChild 节点。 |
内部HTML(InnerHtml)
public virtual string InnerHtml { get; set; }
获取或设置对象的开始标签和结束标签之间的 HTML。InnerHtml 是HtmlAgilityPack.HtmlNode的成员。
例子
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//body/h1");
foreach (var node in htmlNodes)
{
Console.WriteLine(node.InnerHtml);
}
内部TEXT(InnerText)
public virtual string InnerText { get; }
获取对象的开始标签和结束标签之间的文本。InnerText 是HtmlAgilityPack.HtmlNode的成员。
例子
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//body/h1");
foreach (var node in htmlNodes)
{
Console.WriteLine(node.InnerText);
}
外部HTML(OuterHtml)
public virtual string OuterHtml { get; }
获取 HTML 格式的对象及其内容。OuterHtml 是HtmlAgilityPack.HtmlNode的成员。
例子
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//body/h1");
foreach (var node in htmlNodes)
{
Console.WriteLine(node.OuterHtml);
}
父节点(ParentNode)
public HtmlNode ParentNode { get; }
获取此节点的父节点(对于可以有父节点的节点)。ParentNode 是HtmlAgilityPack.HtmlNode的成员。
例子
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var node = htmlDoc.DocumentNode.SelectSingleNode("//body/h1");
HtmlNode parentNode = node.ParentNode;
Console.WriteLine(parentNode.Name);
方法的更多示例,点此查看-->HTML操作
HTML遍历
遍历允许您遍历 HTML 节点。
属性
| 名称 | 描述 |
|---|---|
| ChildNodes | 获取该节点的所有子节点。 |
| FirstChild | 获取节点的第一个子节点。 |
| LastChild | 获取节点的最后一个子节点。 |
| NextSibling | 获取紧随该元素之后的 HTML 节点。 |
| ParentNode | 获取此节点的父节点(对于可以有父节点的节点)。 |
方法
| 名称 | 描述 |
|---|---|
| Ancestors() | 获取节点的所有祖先。 |
| Ancestors(String) | 获取具有匹配名称的祖先。 |
| AncestorsAndSelf() | 获取所有祖先节点和当前节点。 |
| AncestorsAndSelf(String) | 获取名称匹配的所有祖先节点和当前节点。 |
| DescendantNodes | 获取该节点和每个子节点的所有后代节点。 |
| DescendantNodesAndSelf | 按文档顺序返回此元素的所有后代节点的集合。 |
| Descendants() | 获取枚举列表中的所有后代节点。 |
| Descendants(String) | 获取具有匹配名称的所有后代节点。 |
| DescendantsAndSelf() | 按文档顺序返回此元素的所有后代节点的集合。 |
| DescendantsAndSelf(String) | 获取包含该节点的所有后代节点。 |
| Element | 获取第一代子节点匹配名称。 |
| Elements | 获取匹配name的第一代子节点。 |
属性、方法的更多示例,点此查看-->HTML遍历
HTML编写器
保存 HtmlDocument 并写入 HtmlNode
HtmlDocument - 方法
| 名称 | 描述 |
|---|---|
| Save(Stream) | 将 HTML 文档保存到指定的流。 |
| Save(StreamWriter) | 将 HTML 文档保存到指定的 StreamWriter。 |
| Save(TextWriter) | 将 HTML 文档保存到指定的 TextWriter。 |
| Save(String) | 将混合文档保存到指定文件。 |
| Save(XmlWriter) | 将 HTML 文档保存到指定的 XmlWriter。 |
| Save(Stream, Encoding) | 将 HTML 文档保存到指定的流。 |
| Save(String, Encoding) | 将混合文档保存到指定文件。 |
HtmlNode - 方法
| 名称 | 描述 |
|---|---|
| WriteContentTo() | 将节点的所有子节点保存到字符串中。 |
| WriteContentTo(TextWriter) | 将节点的所有子节点保存到指定的 TextWriter。 |
| WriteTo() | 将当前节点保存到字符串中。 |
| WriteTo(TextWriter) | 将当前节点保存到指定的 TextWriter。 |
| WriteTo(XmlWriter) | 将当前节点保存到指定的 XmlWriter。 |
方法的更多示例,点此查看-->HTML编写器
HTML实用程序
Html文档实用程序
Html文档方法
| 名称 | 描述 |
|---|---|
| DetectEncoding(Stream) | 检测 HTML 流的编码。 |
| DetectEncoding(TextReader) | 检测 TextReader 上提供的 HTML 文本的编码。 |
| DetectEncoding(String) | 检测 HTML 文件的编码。 |
| DetectEncodingAndLoad(String) | 首先从文件中检测 HTML 文档的编码,然后加载该文件。 |
| DetectEncodingAndLoad(String, Boolean) | 首先从文件中检测 HTML 文档的编码,然后加载该文件。 |
方法的更多示例,点此查看-->HTML实用程序


评论(0)