多くの開発者は、.NET を使用して動的に生成された HTML コンテンツを取得するのに苦労しています。 System.Windows.Forms.WebBrowser
や mshtml.HTMLDocument
COM インターフェイスの採用などの一般的なアプローチでは、不十分なことがよくあります。
System.Windows.Forms.WebBrowser
クラスと mshtml.HTMLDocument
インターフェイスは、動的に読み込まれる HTML をキャプチャするには不十分な機能を提供します。 次のコード例は、この制限を示しています。
System.Windows.Forms.WebBrowser
を使用した例:
<code class="language-csharp">WebBrowser wb = new WebBrowser(); wb.Navigate("https://www.google.com/#q=where+am+i"); wb.DocumentCompleted += (sender, e) => { mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)wb.Document.DomDocument; foreach (IHTMLElement element in doc.all) { System.Diagnostics.Debug.WriteLine(element.outerHTML); } }; Form f = new Form(); f.Controls.Add(wb); Application.Run(f);</code>
mshtml.HTMLDocument
を使用した例:
<code class="language-csharp">mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)new mshtml.HTMLDocument(); doc.write(new System.Net.WebClient().DownloadString("https://www.google.com/#q=where+am+i")); foreach (IHTMLElement e in doc.all) { System.Diagnostics.Debug.WriteLine(e.outerHTML); }</code>
どちらの例も、動的にレンダリングされた完全な HTML をキャプチャできません。
動的に生成された HTML を取得するためのより効果的な戦略には、次の手順が含まれます。
FEATURE_BROWSER_EMULATION
コントロールが最新の HTML5 機能をサポートするように、WebBrowser
レジストリ キーを構成します。WebBrowser
コントロールを使用して URL に移動し、DocumentCompleted
イベントを処理します。documentElement.outerHTML
を定期的にチェックする) を使用して、ページのレンダリング時に HTML コンテンツの変更を検出します。WebBrowser.IsBusy
をチェックするか、documentElement.outerHTML
にそれ以上の変更がないことによって決定されます)。この洗練されたアプローチは、完全にレンダリングされた動的 HTML コンテンツをキャプチャするためのより信頼性の高い方法を提供します。 この改良された技術により、.NET アプリケーションと Web ページの対話機能が強化されます。
以上が.NET を使用して動的に生成された HTML コンテンツを効果的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。