Récupérer "Eléments" page Web - Edge

Bonjour à tous et très bonne année.

Sauriez-vous svp me dire comment faire pour récupérer en VBA avec Excel le contenu "Eléments" d'une page web (avec Edge, pas avec IE) ?

Exemple : si vous ouvrez la page d'accueil de Wikipedia avec Microsoft Edge, et que vous faites un "Clic droit" > Inspecter, vous verrez une nouvelle fenêtre qui apparait sur la droite, dont je vous montre un extrait ci-dessous (dans la catégorie "</> Eléments"). J'aimerais que le contenu complet de cet élément soit récupéré dans le code VBA pour que je puisse ensuite faire des opérations dessus.

Je crois que GetElementById se rapproche de ce que je souhaite, mais ne fonctionne pas (a priori) sur Edge (je n'ai pas la possibilité d'utiliser IE).

Je suis preneur des quelques lignes de code qu'il faut pour ouvrir la page web (pas forcément en mode visible), temporiser son chargement (si besoin) et récupérer le contenu "Eléments".

PS : quelles Références faut-il ajouter dans le projet VBA pour que cela fonctionne ?

image

Merci infiniment pour votre support.

Bonjour tout le monde,

J'ai avancé dans mes recherches. L'objectif est de noter dans Excel le nombre de langues disponibles dans plusieurs pages Wikipedia. Par exemple avec la page Sport de Wikipedia, on voit qu'il est écrit 205 langues.

image

Ci-dessous mon code actuel :

Sub Test()

Dim appIE As Object
Dim html As HTMLDocument
Dim nbreLangues

Set appIE = CreateObject("internetexplorer.application")
With appIE
    .navigate "https : // fr . wikipedia . org/wiki/Sport"
    ' j'ai mis des espaces dans l'URL ci-dessus car sinon je ne peux pas poster mon message; penser à supprimer les 7 espaces
    .Visible = True
End With

Do While appIE.Busy
    DoEvents
Loop

Set html = appIE.document

nbreLangues = html.getElementsByClassName("vector-dropdown-label-text")
ActiveSheet.Range("A1") = nbreLangues.innerHTML

Set html = Nothing
appIE.Quit

End Sub

Pour information, un extrait du code HTML de la page "Sport" de Wikipedia est le suivant (que l'on peut trouver en ouvrant la page web en question et en faisant clic droit > inspecter :

</nav>
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Sport</span></h1>

<div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang">
    <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Aller à un article dans une autre langue. Disponible en 205 langues.">
    <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-205" aria-hidden="true"><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span>

<span class="vector-dropdown-label-text">205 langues</span>
    </label>

On peut noter que l'extrait ci-dessus montre bien l'information "205 langues" dans la classe "vector-dropdown-label-text".

J'ai aussi remarqué que bien que le code VBA mentionne "Internet Explorer", cela ouvre bien une page dans Edge.

Le message d'erreur que j'ai est le suivant quand je lance la macro :

image

J'ai donc mis un point d'arrêt sur la ligne suivante pour voir ce qu'il se passe :

Set html = appIE.document

Puis en exécutant pas à pas, j'obtiens ceci (et donc je n'ai plus le message d'erreur cité ci-dessus).

image

Du coup, pour savoir ce qui cloche, j'ai inséré une ligne de code supplémentaire que voici (2e ligne ci-dessous, le reste est inchangé) :

Set html = appIE.document
ActiveSheet.Range("A1") = "hello"
nbreLangues = html.getElementsByClassName("vector-dropdown-label-text")
ActiveSheet.Range("A1") = nbreLangues.innerHTML

Il s'agit d'écrire "hello" en cellule A1 juste pour voir si la macro est capable d'aller jusque-là. Et effectivement, je constate que "hello" s'est bien inscrit dans la feuille Excel. Mais cette fois, j'ai l'erreur suivante qui s'affiche :

image

C'est la ligne de code suivante qui ne fonctionne pas :

nbreLangues = html.getElementsByClassName("vector-dropdown-label-text")

Car en mettant un espion sur nbreLangues, cela renvoie "Nothing".

Est-ce que vous sauriez m'aider à m'en sortir svp ?

Merci beaucoup.

Bonjour Jim1716

Ce que vous voulez faire n'est plus possible depuis un moment

Vous pouvez essayer avec PQ (Power Query) sous réserve que le site prenne encore en charge ce genre de requête

Bonne chance

Bonjour BrunoM45

Merci pour votre réponse. Je ne connais pas Power Query, je vais m'instruire un peu. En première utilisation, j'obtiens un message d'échec, j'ai fouillé un peu pour le moment sans trouver moyen de résoudre. Les recherches vont continuer.

image

Est-ce que du coup vous me confirmez qu'il n'existe aucun autre moyen (en VBA idéalement) pour copier le contenu de la page web, à défaut de pouvoir récupérer les éléments par des fonctions type getElementByXXX ?

Si c'est OK pour vous et comme le problème n'est pas résolu, je ne clique pas sur le bouton "Résolu" (sauf contre-indication).

Rechercher des sujets similaires à "recuperer elements page web edge"