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)