HTMLは、Webサイト、Webアプリケーションなどで広く使用されているマークアップ言語です。HTMLのコンテンツは、さまざまなタグを使用して区別されます。開始タグと終了タグを無視して、C#言語を使用してHTMLをプレーンテキストに簡単に変換できます。同様に、要件に応じて、カスケードスタイルシートの仕様、JavaScript、またはHTMLの他のセクションが存在する可能性があります。したがって、HTMLドキュメントからテキストを抽出するようなものです。詳細については、次のセクションを見ていきましょう。
- C#でのHTMLからプレーンテキストへのコンバーター
- C#でINodeIteratorを使用してHTMLをテキストファイルに変換する
- C#を使用してさまざまなアプローチでHTMLからテキストを抽出する
- C#を使用してURL Webページの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 (Document Object Model)に基づいているため、INodeIteratorインターフェイスを使用してAPIのさまざまなノードを反復処理できます。同様に、NodeFilterを定義し、コンテンツをフィルタリングするためのメソッドをオーバーライドするためのコントロールを提供します。 HTMLファイル内のスタイル、スクリプト、またはその他の要素を無視して、テキスト文字列のみを選択することができます。以下は、C#を使用してHTMLをプレーンTXTファイルに変換する手順です。
- 入力HTMLファイルを読み取る
- ノードイテレータのインスタンスを初期化します
- INodeIteratorインスタンスを作成します
- スタイルフィルターを確認する
- 文字列のノード値を読み取る
- 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>
///「style」および「script」要素のコンテンツを無視するために作成されたユーザーフィルターを表します。
///</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プロパティを操作できます。
- 入力HTMLドキュメントをロードします
- ユーザー定義のメソッドを定義する
- 各NodeTypeをチェックして、それが要素ノードかテキストノードかを確認します
- TextContentプロパティを使用してテキスト要素を取得する
- 出力TXTファイルを保存します
以下のコードスニペットは、C#でHTMLをプレーンテキストに変換するためのこれら2つの異なるアプローチを説明しています。
String text = "";
String content = File.ReadAllText(dataDir + "Test2.html");
// HTMLドキュメントのインスタンスを作成します
var document = new HTMLDocument(content, "");
// カスタムメソッドを使用してドキュメントからテキスト要素を収集する2番目の方法
text = GetContent(document.Body);
File.WriteAllText("Test.txt", text);
// TextContentプロパティを使用してドキュメントからテキスト要素を収集する3番目の方法
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#を使用してURLWebページのHTMLをテキストに変換する
HTMLファイルをディスクにダウンロードして存在させる必要があるオフラインWebページのHTMLからテキストへの変換についてはすでに説明しました。 HTMLファイルをディスクに保存する必要がない場合は、さらに一歩進んでみましょう。 URLを指定することで、C#を使用してWebページをTXTファイルに直接変換できます。たとえば、以下の手順でAspose.HTML for.NET APIの製品ページをTXTファイルに変換してみましょう。
- HTMLDocumentオブジェクトを初期化し、URLを指定します
- HTML形式のテキストコンテンツを読む
- Webページから抽出したテキストを使用してTXTファイルを作成します
以下のコードは、C#を使用してURL WebページのHTMLをテキストに変換する方法を示しています。
// 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からテキストを抽出する方法、およびC#を使用してオンラインWebページのURLをTXTファイル形式に変換する方法について説明しました。さらにサポートが必要な場合は、さまざまなアプローチを使用して、無料サポートフォーラムからお気軽にご連絡ください。
関連項目
ヒント:テキストからアニメーションを生成できる無料のText to GIFConverterに興味があるかもしれません。