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#
- Převeďte HTML na textový soubor pomocí INodeIterator v C#
- Extrahujte text z HTML s různými přístupy pomocí C#
- Převést HTML webové stránky URL na text pomocí C#
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#:
- Číst vstupní soubor HTML
- Inicializujte instanci iterátoru uzlu
- Vytvořte instanci INodeIterator
- Zkontrolujte filtr stylů
- Číst hodnotu uzlu v řetězci
- 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:
- Načíst vstupní HTML dokument
- Definujte uživatelem definovanou metodu
- Zkontrolujte každý NodeType, abyste zjistili, zda se jedná o uzel prvku nebo textový uzel
- Získejte textové prvky pomocí vlastnosti TextContent
- 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ů:
- Inicializujte objekt HTMLDocument a zadejte adresu URL
- Přečtěte si textový obsah ve formátu HTML
- 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ů.