转换提取 HTML 文本

HTML 是一种标记语言,广泛用于网站、Web 应用程序等。HTML 中的内容使用不同的标签来区分。您可以使用 C# 语言轻松地将 HTML 转换为纯文本,同时忽略开始和结束标记。同样,根据您的要求,可能会有一些级联样式表规范、JavaScript 或 HTML 的任何其他部分。因此,它就像从 HTML 文档中提取文本一样。让我们通过以下部分了解详细信息:

C#中的HTML到纯文本转换器

您可以使用 Aspose.HTML for .NET API 将 HTML 转换为纯文本。可以使用以下 NuGet 安装命令在基于 .NET Framework 的环境中轻松配置它:

PM> Install-Package Aspose.Html

在 C# 中使用 INodeIterator 将 HTML 转换为文本文件

Aspose.HTML for .NET API 基于 DOM(文档对象模型),因此您可以使用 INodeIterator 接口遍历 API 的不同节点。同样,它使您可以控制定义 NodeFilter 并覆盖过滤内容的方法。您可以忽略 HTML 文件中的样式、脚本或任何其他元素,仅从中挑选出文本字符串。以下是使用 C# 将 HTML 转换为纯 TXT 文件的步骤:

  1. 读取输入 HTML 文件
  2. 初始化节点迭代器的实例
  3. 创建 INodeIterator 实例
  4. 检查样式过滤器
  5. 读取字符串中的节点值
  6. 将 HTML 的文本内容写入 TXT 文件

下面的代码展示了如何使用 C# 将 HTML 转换为纯文本文件:

String content = File.ReadAllText(dataDir + "Test2.html");

// 创建 HTML 文档的实例
using (var document = new HTMLDocument(content, ""))
{
    // 从文档中收集文本元素的第一种方法
    // 初始化节点迭代器的实例
    Aspose.Html.Dom.Traversal.INodeIterator iterator = document.CreateNodeIterator(document, Aspose.Html.Dom.Traversal.Filters.NodeFilter.SHOW_TEXT, new StyleFilter());
    StringBuilder sb = new StringBuilder();
    Aspose.Html.Dom.Node node;
    while ((node = iterator.NextNode()) != null)
        sb.Append(node.NodeValue);
    Console.WriteLine(sb.ToString());

    File.WriteAllText(@"NodeIterator.txt", sb.ToString());
}


///<summary>
/// 表示为忽略“样式”和“脚本”元素的内容而创建的用户过滤器。
///</summary>
class StyleFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
    public override short AcceptNode(Aspose.Html.Dom.Node n)
    {
        //如果你想避免任何元素,用大写字母写它的名字
        return (n.ParentElement.TagName == "STYLE" || n.ParentElement.TagName == "SCRIPT" ? FILTER_REJECT : FILTER_ACCEPT);
    }
}

使用 C# 以不同的方法从 HTML 中提取文本

我们已经学习了如何使用 INodeIterator 将 HTML 转换为文本。同样,还有其他几种方法可以实现这些要求。您可以创建自定义方法来提取文本,或使用 TextContent 属性,如下面的步骤所述:

  1. 加载输入 HTML 文档
  2. 定义用户定义的方法
  3. 检查每个 NodeType 以查看它是元素节点还是文本节点
  4. 使用 TextContent 属性获取文本元素
  5. 保存输出 TXT 文件

下面的代码片段解释了在 C# 中将 HTML 转换为纯文本的两种不同方法:

String text = "";
String content = File.ReadAllText(dataDir + "Test2.html");
// 创建 HTML 文档的实例
var document = new HTMLDocument(content, "");

// 使用自定义方法从文档中收集文本元素的第二种方法
text = GetContent(document.Body);

File.WriteAllText("Test.txt", text);

// 第三种使用 TextContent 属性从文档中收集文本元素的方法
text = document.Body.TextContent;

File.WriteAllText("Test.txt", text);



static string GetContent(Aspose.Html.Dom.Node node)
{
    StringBuilder sb = new StringBuilder();
    foreach (var n in node.ChildNodes)
    {
        if (n.NodeType == Aspose.Html.Dom.Node.ELEMENT_NODE)
            sb.Append(GetContent(n));
        else if (n.NodeType == Aspose.Html.Dom.Node.TEXT_NODE)
            sb.Append(n.NodeValue);
    }
    return sb.ToString();
}

使用 C# 将 URL 网页 HTML 转换为文本

我们已经介绍了离线网页 HTML 到文本的转换,其中 HTML 文件需要通过将其下载到磁盘上来存在。让我们更进一步,您甚至不需要将 HTML 文件保存在磁盘上。您可以通过指定其 URL 直接将网页转换为使用 C# 的 TXT 文件。例如,让我们将 Aspose.HTML for .NET API 的产品页面转换为 TXT 文件,步骤如下:

  1. 初始化 HTMLDocument 对象并指定 URL
  2. 读取 HTML 格式的文本内容
  3. 使用从网页中提取的文本编写 TXT 文件

下面的代码展示了如何使用 C# 将 URL 网页 HTML 转换为文本:

// 用 URL 初始化 HTMLDocument 对象
HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net");
            
// 读取 HTML 格式的文本内容
String text = document.Body.TextContent;
            
// 使用提取的文本编写 TXT 文件
File.WriteAllText("Webpage.txt", text);

结论

在本文中,我们讨论了如何将 HTML 文件转换为纯文本,从 HTML 中提取文本,以及使用 C# 将在线网页 URL 转换为 TXT 文件格式。如果您需要任何进一步的帮助,您可以使用不同的方法并随时通过 免费支持论坛 与我们联系。

也可以看看

提示:您可能对免费的 Text to GIF Converter 感兴趣,它允许您从文本生成动画。