許多開發人員很難使用 .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中文網其他相關文章!