De nombreux développeurs ont du mal à récupérer du contenu HTML généré dynamiquement à l'aide de .NET. Les approches courantes, telles que l'utilisation de System.Windows.Forms.WebBrowser
ou de l'interface COM mshtml.HTMLDocument
, échouent souvent.
La classe System.Windows.Forms.WebBrowser
et l'interface mshtml.HTMLDocument
fournissent des fonctionnalités insuffisantes pour capturer du HTML chargé dynamiquement. Les exemples de code suivants illustrent cette limitation :
Exemple utilisant 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>
Exemple utilisant 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>
Les deux exemples ne parviennent pas à capturer le HTML complet et rendu dynamiquement.
Une stratégie plus efficace pour récupérer du HTML généré dynamiquement implique ces étapes :
FEATURE_BROWSER_EMULATION
pour vous assurer que le contrôle WebBrowser
prend en charge les fonctionnalités HTML5 modernes.WebBrowser
pour accéder à l'URL et gérer l'événement DocumentCompleted
.documentElement.outerHTML
) pour détecter les modifications dans le contenu HTML au fur et à mesure du rendu de la page.WebBrowser.IsBusy
ou l'absence de modifications supplémentaires dans documentElement.outerHTML
).Cette approche raffinée fournit une méthode plus fiable pour capturer le contenu HTML dynamique entièrement rendu. Cette technique améliorée améliore les capacités d'interaction des applications .NET avec les pages Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!