Konwertuj Wyodrębnij tekst HTML

HTML to język znaczników, który jest powszechnie używany w witrynach internetowych, aplikacjach internetowych itp. Zawartość w HTML jest rozróżniana za pomocą różnych tagów. Możesz łatwo przekonwertować kod HTML na zwykły tekst przy użyciu języka C#, ignorując znaczniki otwierające i zamykające. Podobnie, mogą istnieć specyfikacje kaskadowych arkuszy stylów, JavaScript lub dowolna inna sekcja HTML zgodnie z Twoimi wymaganiami. Dlatego jest to jak wyodrębnianie tekstu z dokumentu HTML. Przejdźmy przez następującą sekcję, aby uzyskać szczegółowe informacje:

Konwerter HTML na zwykły tekst w C#

Możesz przekonwertować HTML na zwykły tekst za pomocą Aspose.HTML for .NET API. Można go łatwo skonfigurować w środowisku opartym na .NET Framework za pomocą następującego polecenia instalacyjnego NuGet:

PM> Install-Package Aspose.Html

Konwertuj HTML na plik tekstowy za pomocą INodeIterator w C#

Aspose.HTML for .NET API jest oparty na DOM (Document Object Model), więc możesz iterować przez różne węzły API za pomocą interfejsu INodeIterator. Podobnie daje kontrolę nad definiowaniem NodeFilter i nadpisywaniem metod filtrowania zawartości. Możesz zignorować styl, skrypt lub dowolny inny element w pliku HTML, aby wybrać z niego tylko ciąg tekstowy. Poniżej przedstawiono kroki konwersji HTML na zwykły plik TXT przy użyciu języka C#:

  1. Przeczytaj wejściowy plik HTML
  2. Zainicjuj instancję iteratora węzła
  3. Utwórz instancję INodeIterator.
  4. Sprawdź filtr stylu
  5. Odczytaj wartość węzła w łańcuchu
  6. Napisz zawartość tekstową HTML jako plik TXT

Poniższy kod pokazuje, jak przekonwertować plik HTML na zwykły plik tekstowy przy użyciu języka C#:

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

// Utwórz instancję dokumentu HTML
using (var document = new HTMLDocument(content, ""))
{
    // Pierwszy sposób zbierania elementów tekstowych z dokumentu
    // Zainicjuj instancję iteratora węzła
    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>
/// Reprezentuje filtr użytkownika utworzony w celu zignorowania zawartości elementu „style” i „script”.
///</summary>
class StyleFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
    public override short AcceptNode(Aspose.Html.Dom.Node n)
    {
        //Jeśli chcesz pominąć jakiś element, napisz jego nazwę dużymi literami
        return (n.ParentElement.TagName == "STYLE" || n.ParentElement.TagName == "SCRIPT" ? FILTER_REJECT : FILTER_ACCEPT);
    }
}

Wyodrębnij tekst z HTML z różnymi podejściami przy użyciu C#

Nauczyliśmy się konwertować HTML na tekst za pomocą INodeIterator. Podobnie, istnieje kilka innych podejść do spełnienia tych wymagań. Możesz utworzyć niestandardową metodę wyodrębniania tekstu lub pracować z właściwością TextContent, jak wyjaśniono w poniższych krokach:

  1. Załaduj wejściowy dokument HTML
  2. Zdefiniuj metodę zdefiniowaną przez użytkownika
  3. Sprawdź każdy NodeType, aby zobaczyć, czy jest to węzeł elementu, czy węzeł tekstowy
  4. Pobierz elementy tekstowe za pomocą właściwości TextContent.
  5. Zapisz wyjściowy plik TXT

Poniższy fragment kodu wyjaśnia te dwa różne podejścia do konwersji HTML na zwykły tekst w języku C#:

String text = "";
String content = File.ReadAllText(dataDir + "Test2.html");
// Utwórz instancję dokumentu HTML
var document = new HTMLDocument(content, "");

// Drugi sposób zbierania elementów tekstowych z dokumentu metodą niestandardową
text = GetContent(document.Body);

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

// Trzeci sposób zbierania elementów tekstowych z dokumentu za pomocą właściwości 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();
}

Konwertuj HTML strony internetowej URL na tekst za pomocą C#

Omówiliśmy już konwersję HTML strony internetowej offline na tekst, w której plik HTML musi istnieć, pobierając go na dysk. Przejdźmy o krok dalej, gdzie nie trzeba nawet zapisywać pliku HTML na dysku. Możesz bezpośrednio przekonwertować stronę internetową, określając jej adres URL, do pliku TXT przy użyciu języka C#. Na przykład przekonwertujmy stronę produktu Aspose.HTML for .NET API do pliku TXT, wykonując poniższe czynności:

  1. Zainicjuj obiekt HTMLDocument i podaj adres URL
  2. Przeczytaj zawartość tekstową formatu HTML
  3. Napisz plik TXT z wyodrębnionym tekstem ze strony internetowej

Poniższy kod pokazuje, jak przekonwertować adres URL strony HTML na tekst za pomocą języka C#:

// Zainicjuj obiekt HTMLDocument za pomocą adresu URL
HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net");
            
// Przeczytaj zawartość tekstową formatu HTML
String text = document.Body.TextContent;
            
// Napisz plik TXT z wyodrębnionym tekstem
File.WriteAllText("Webpage.txt", text);

Wniosek

W tym artykule omówiliśmy, jak konwertować pliki HTML na zwykły tekst, wyodrębniać tekst z HTML, a także adres URL strony internetowej online do formatu pliku TXT przy użyciu języka C#. Możesz skorzystać z różnych podejść i jeśli potrzebujesz dalszej pomocy, skontaktuj się z nami za pośrednictwem bezpłatnego forum wsparcia.

Zobacz też

Wskazówka: Być może zainteresuje Cię darmowy Konwerter tekstu na GIF, który pozwala generować animacje z tekstów.