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实用程序

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。