[C#]AngleSharpで、JavaScriptを含むサイトのスクリプトを解釈させる

カテゴリ: C# | タグ:

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>
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。

PhpStormなど、JetBrainsの他IDEユーザにもおススメ!! 「IntelliJ IDEAハンズオン」