Преобразование Извлечение HTML-текста

HTML — это язык разметки, широко используемый на веб-сайтах, в веб-приложениях и т. д. Содержимое в HTML различается с помощью различных тегов. Вы можете легко преобразовать HTML в обычный текст с помощью языка C#, игнорируя при этом открывающие и закрывающие теги. Точно так же могут быть некоторые спецификации каскадных таблиц стилей, JavaScript или любой другой раздел HTML в соответствии с вашими требованиями. Таким образом, это похоже на извлечение текста из HTML-документа. Давайте пройдемся по следующему разделу для получения подробной информации:

Конвертер HTML в обычный текст на C#

Вы можете конвертировать HTML в обычный текст с помощью Aspose.HTML for .NET API. Его можно легко настроить в среде на основе .NET Framework с помощью следующей команды установки NuGet:

PM> Install-Package Aspose.Html

Преобразование HTML в текстовый файл с помощью INodeIterator в С#

Aspose.HTML для .NET API основан на DOM (объектной модели документа), поэтому вы можете перебирать различные узлы API с помощью интерфейса INodeIterator. Точно так же он дает вам возможность определить NodeFilter и переопределить методы фильтрации содержимого. Вы можете игнорировать стиль, сценарий или любой другой элемент в файле HTML, чтобы выбрать из него только текстовую строку. Ниже приведены шаги для преобразования HTML в обычный файл TXT с помощью C#:

  1. Чтение входного HTML-файла
  2. Инициализировать экземпляр итератора узла
  3. Создать экземпляр INodeIterator
  4. Проверить наличие фильтра стилей
  5. Чтение значения узла в строке
  6. Запись текстового содержимого HTML в виде файла TXT

В приведенном ниже коде показано, как преобразовать HTML в обычный текстовый файл с помощью C#:

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);
    }
}

Извлечение текста из HTML с помощью различных подходов с использованием C#

Мы научились преобразовывать HTML в текст с помощью INodeIterator. Кроме того, существует несколько других подходов для достижения этих требований. Вы можете создать собственный метод для извлечения текста или работать со свойством TextContent, как описано в следующих шагах:

  1. Загрузить входной HTML-документ
  2. Определение пользовательского метода
  3. Проверьте каждый NodeType, чтобы узнать, является ли он узлом элемента или текстовым узлом.
  4. Получить текстовые элементы с помощью свойства TextContent
  5. Сохранить выходной TXT-файл

Фрагмент кода ниже объясняет эти два разных подхода к преобразованию HTML в обычный текст на C#:

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();
}

Преобразование URL-адреса веб-страницы HTML в текст с помощью С#

Мы уже рассмотрели преобразование HTML в текст оффлайновой веб-страницы, где файл HTML должен существовать, загрузив его на диск. Давайте сделаем еще один шаг вперед, когда вам даже не нужно сохранять файл HTML на диске. Вы можете напрямую преобразовать веб-страницу, указав ее URL-адрес, в файл TXT с помощью C#. Например, давайте преобразуем страницу продукта Aspose.HTML для .NET API в файл TXT, выполнив следующие действия:

  1. Инициализировать объект HTMLDocument и указать URL
  2. Чтение текстового содержимого формата HTML
  3. Запишите файл TXT с извлеченным текстом с веб-страницы.

В приведенном ниже коде показано, как преобразовать URL-адрес веб-страницы HTML в текст с помощью C#:

// Инициализировать объект HTMLDocument с URL-адресом
HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net");
            
// Чтение текстового содержимого формата HTML
String text = document.Body.TextContent;
            
// Запишите файл TXT с извлеченным текстом
File.WriteAllText("Webpage.txt", text);

Вывод

В этой статье мы обсудили, как конвертировать файлы HTML в обычный текст, извлекать текст из HTML, а также URL-адрес веб-страницы в Интернете в формат файла TXT с помощью C#. Вы можете использовать разные подходы и не стесняйтесь обращаться к нам через Бесплатный форум поддержки, если вам нужна дополнительная помощь.

Смотрите также

Совет: вас может заинтересовать бесплатный конвертер текста в GIF, который позволяет создавать анимацию из текста.