Maison > développement back-end > C++ > Comment puis-je récupérer efficacement du contenu HTML généré dynamiquement à l'aide de .NET ?

Comment puis-je récupérer efficacement du contenu HTML généré dynamiquement à l'aide de .NET ?

Mary-Kate Olsen
Libérer: 2025-01-15 10:42:48
original
388 Les gens l'ont consulté

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

Récupération de HTML dynamique dans les applications .NET

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.

Limitations des méthodes standards

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>
Copier après la connexion

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>
Copier après la connexion

Les deux exemples ne parviennent pas à capturer le HTML complet et rendu dynamiquement.

Une solution plus robuste

Une stratégie plus efficace pour récupérer du HTML généré dynamiquement implique ces étapes :

  1. Activer le rendu HTML amélioré : Configurez la clé de registre FEATURE_BROWSER_EMULATION pour vous assurer que le contrôle WebBrowser prend en charge les fonctionnalités HTML5 modernes.
  2. Charger la page et surveiller l'achèvement : Utilisez le contrôle WebBrowser pour accéder à l'URL et gérer l'événement DocumentCompleted.
  3. Mettre en œuvre l'interrogation : Utiliser un mécanisme d'interrogation (par exemple, vérifier régulièrement documentElement.outerHTML) pour détecter les modifications dans le contenu HTML au fur et à mesure du rendu de la page.
  4. Terminer l'interrogation : Arrêtez l'interrogation lorsque le rendu de la page est terminé (déterminé en vérifiant 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal