Převést extrahovaný text HTML

HTML je značkovací jazyk, který se s oblibou používá na webových stránkách, webových aplikacích atd. Obsah v HTML se rozlišuje pomocí různých značek. HTML můžete snadno převést na prostý text pomocí jazyka C# a ignorovat otevírací a uzavírací značky. Podobně mohou existovat některé specifikace kaskádových stylů, JavaScript nebo jakákoli jiná část HTML podle vašich požadavků. Proto je to jako extrahování textu z dokumentu HTML. Projděte si následující sekci, kde najdete podrobné informace:

Převaděč HTML na prostý text v C#

HTML můžete převést na prostý text pomocí Aspose.HTML for .NET API. Lze jej snadno nakonfigurovat v prostředí založeném na .NET Framework pomocí následujícího instalačního příkazu NuGet:

PM> Install-Package Aspose.Html

Převeďte HTML na textový soubor pomocí INodeIterator v C#

Aspose.HTML for .NET API je založeno na DOM (Document Object Model), takže můžete iterovat přes různé uzly API pomocí rozhraní INodeIterator. Podobně vám dává možnost definovat NodeFilter a přepsat metody pro filtrování obsahu. Styl, skript nebo jakýkoli jiný prvek v souboru HTML můžete ignorovat a vybrat z něj pouze textový řetězec. Níže jsou uvedeny kroky pro převod HTML na prostý TXT soubor pomocí C#:

  1. Číst vstupní soubor HTML
  2. Inicializujte instanci iterátoru uzlu
  3. Vytvořte instanci INodeIterator
  4. Zkontrolujte filtr stylů
  5. Číst hodnotu uzlu v řetězci
  6. Napište textový obsah HTML jako soubor TXT

Níže uvedený kód ukazuje, jak převést HTML na prostý textový soubor pomocí C#:

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

// Vytvořte instanci dokumentu HTML
using (var document = new HTMLDocument(content, ""))
{
    // První způsob shromažďování textových prvků z dokumentu
    // Inicializujte instanci iterátoru uzlu
    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>
/// Představuje uživatelský filtr vytvořený za účelem ignorování obsahu elementu 'style' a 'script'.
///</summary>
class StyleFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
    public override short AcceptNode(Aspose.Html.Dom.Node n)
    {
        //Pokud se chcete vyhnout nějakému prvku, napište jeho název velkými písmeny
        return (n.ParentElement.TagName == "STYLE" || n.ParentElement.TagName == "SCRIPT" ? FILTER_REJECT : FILTER_ACCEPT);
    }
}

Extrahujte text z HTML s různými přístupy pomocí C#

Naučili jsme se, jak převést HTML na text pomocí INodeIterator. Stejně tak existuje několik dalších přístupů k dosažení těchto požadavků. Můžete vytvořit vlastní metodu pro extrakci textu nebo pracovat s vlastností TextContent, jak je vysvětleno v následujících krocích:

  1. Načíst vstupní HTML dokument
  2. Definujte uživatelem definovanou metodu
  3. Zkontrolujte každý NodeType, abyste zjistili, zda se jedná o uzel prvku nebo textový uzel
  4. Získejte textové prvky pomocí vlastnosti TextContent
  5. Uložit výstupní TXT soubor

Níže uvedený fragment kódu vysvětluje tyto dva různé přístupy k převodu HTML na prostý text v C#:

String text = "";
String content = File.ReadAllText(dataDir + "Test2.html");
// Vytvořte instanci dokumentu HTML
var document = new HTMLDocument(content, "");

// Druhý způsob shromažďování textových prvků z dokumentu pomocí vlastní metody
text = GetContent(document.Body);

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

// Třetí způsob shromažďování textových prvků z dokumentu pomocí vlastnosti 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();
}

Převést HTML webové stránky URL na text pomocí C#

Již jsme se zabývali převodem offline webové stránky HTML na text, kde je vyžadována existence souboru HTML stažením na disk. Posuňme se o další krok dále, kdy HTML soubor ani nemusíte ukládat na disk. Webovou stránku můžete přímo převést zadáním její adresy URL do souboru TXT pomocí C#. Převeďte například stránku produktu Aspose.HTML for .NET API na soubor TXT pomocí níže uvedených kroků:

  1. Inicializujte objekt HTMLDocument a zadejte adresu URL
  2. Přečtěte si textový obsah ve formátu HTML
  3. Napište TXT soubor s extrahovaným textem z webové stránky

Níže uvedený kód ukazuje, jak převést HTML webové stránky URL na text pomocí C#:

// Inicializujte objekt HTMLDocument pomocí adresy URL
HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net");
            
// Přečtěte si textový obsah ve formátu HTML
String text = document.Body.TextContent;
            
// Napište TXT soubor s extrahovaným textem
File.WriteAllText("Webpage.txt", text);

Závěr

V tomto článku jsme diskutovali o tom, jak převést soubory HTML na prostý text, extrahovat text z HTML a také adresu URL webové stránky online do formátu souboru TXT pomocí C#. Můžete použít různé přístupy a pokud potřebujete další pomoc, neváhejte nás kontaktovat prostřednictvím Free Support Forum.

Viz také

Tip: Možná vás bude zajímat bezplatný Text to GIF Converter, který vám umožní generovat animace z textů.