首页 >后端开发 >C++ >如何使用 .NET 有效检索动态生成的 HTML 内容?

如何使用 .NET 有效检索动态生成的 HTML 内容?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-15 10:42:48336浏览

How Can I Effectively Retrieve Dynamically Generated HTML Content Using .NET?

在 .NET 应用程序中检索动态 HTML

许多开发人员很难使用 .NET 检索动态生成的 HTML 内容。 常见的方法,例如使用 System.Windows.Forms.WebBrowsermshtml.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 的更有效策略涉及以下步骤:

  1. 启用增强型 HTML 渲染: 配置 FEATURE_BROWSER_EMULATION 注册表项以确保 WebBrowser 控件支持现代 HTML5 功能。
  2. 加载页面并监控完成情况:使用WebBrowser控件导航到URL并处理DocumentCompleted事件。
  3. 实施轮询:采用轮询机制(例如定期检查documentElement.outerHTML)来检测页面呈现时 HTML 内容的变化。
  4. 终止轮询:页面渲染完成时停止轮询(通过检查WebBrowser.IsBusydocumentElement.outerHTML中没有进一步更改来确定)。

这种改进的方法提供了一种更可靠的方法来捕获完全渲染的动态 HTML 内容。 这种改进的技术增强了 .NET 应用程序与网页的交互能力。

以上是如何使用 .NET 有效检索动态生成的 HTML 内容?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn