许多开发人员很难使用 .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
注册表项以确保 WebBrowser
控件支持现代 HTML5 功能。WebBrowser
控件导航到URL并处理DocumentCompleted
事件。documentElement.outerHTML
)来检测页面呈现时 HTML 内容的变化。WebBrowser.IsBusy
或documentElement.outerHTML
中没有进一步更改来确定)。这种改进的方法提供了一种更可靠的方法来捕获完全渲染的动态 HTML 内容。 这种改进的技术增强了 .NET 应用程序与网页的交互能力。
以上是如何使用 .NET 有效检索动态生成的 HTML 内容?的详细内容。更多信息请关注PHP中文网其他相关文章!