C#のAngleSharpパッケージで、JavaScriptを含むページを処理したいときに、JavaScriptの実行を有効化させる方法を説明します。
nugetパッケージの登録
今回説明するサンプルコードを実行するためには、AngleSharpパッケージに加えて、AngleSharp.Scriptingパッケージも参照設定に追加されている必要があります。
これは、後述するWithJavaScript()メソッドなどが、AngleSharp.Scriptingパッケージ側で定義されているためです。
JavaScriptが実行可能なAngleSharpのサンプルコード
ポイントは、"using AngleSharp.Scripting;"しているところと、ConfigurationでWithJavaScript()
メソッドをコールしている部分です。
試しにWithJavaScript()を除いて実行してみると、JavaScriptの部分が実行されていないことが確認できます。
using AngleSharp;
using AngleSharp.Dom.Html;
using AngleSharp.Extensions;
using AngleSharp.Scripting;
...
public void parseAngleSharp_Javascript() {
// WithJavaScript()で、JavaScriptを有効にする
var config = Configuration.Default.WithJavaScript();
var parser = new AngleSharp.Parser.Html.HtmlParser( config );
// JavaScriptを含むHtmlテキストを用意する
var source = @"
<html>
<head>
<script>
document.write('<span>Hello World</span>');
</script>
</head>
<body>
</body>
</html>";
// JavaScriptも含めて、Htmlをパースする
var document = parser.Parse( source );
// パースした結果を出力する
Console.WriteLine( document.ToHtml() );
}
このプログラムを実行結果は以下の通りです。JavaScriptのdocument.write()で生成したspanタグがbodyタグの中に生成されています。(見やすくするため、出力結果から改行位置を調整しています)
<html>
<head>
<script>
document.write('<span>Hello World</span>');
</script>
</head>
<body>
<span>Hello World</span>
</body>
</html>
こちらもおススメ