HtmlAgilityPackでのスクリプトの実行

c# html-agility-pack javascript

質問

私は次のように動作する特定のWebページを削り取ろうとしています。

最初にページが読み込まれ、ページにデータを取り込むために必要なデータを取得するためにJavaScriptが実行されます。私はそのデータに興味があります。

私がHtmlAgilityPackでページを取得した場合、スクリプトは実行されないので、本質的にはほとんど空白なページが得られます。

スクリプトを実行するように強制する方法があるので、データを取得できますか?

受け入れられた回答

あなたはサーバーが何を返すのかを知っています。これはウェブブラウザと同じです。 Webブラウザはもちろん、スクリプトを実行します。 Html Agility Packは、HTMLパーサーのみです.JavaScriptを解釈したり、ドキュメントの内部表現にバインドする方法はありません。スクリプトを実行するには、Webブラウザが必要です。あなたの問題に対する完璧な答えは、完全な "ヘッドレス" Webブラウザです。これは、HTMLパーサ、javascriptインタプリタ、ブラウザDOMをシミュレートするモデルを組み込んだものです。基本的には、それはレンダリングの部分がない限り、Webブラウザです。現時点では、.NET環境内で完全に機能するものはありません。

WebBrowserコントロールを使用して、プログラムでコントロールするInternet Explorerで実際にページをロードして実行するのが最善の方法です。これは速くてもかわいいものではありませんが、あなたがする必要があることをします。

また、同様の質問への私の答えを参照してください:これを行うに.NETで利用可能な技術について議論する.NetDOMをロードし、javascript、サーバー側を実行します。ほとんどの作品は現在存在していますが、あまりにもまだそこにはないか、残念ながら正しい方法で統合されていません。


人気のある回答

このために、Awesomiumを使用することができます。http : //www.awesomium.com/それはかなりうまく動作しますが、x64のサポートはなく、スレッドセーフではありません。私はいくつかのウェブサイトを24時間365日スキャンするためにそれを使用しており、少なくとも2日連続して正常に動作していますが、通常はクラッシュします。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ