Malheureusement, je ne connais pas vraiment les "composants" du code HTML (tags, classes, ids, etc.) et comment ils diffèrent les uns des autres. J'essaie de faire exécuter une liste de liens à un programme, de cliquer sur chacun d'entre eux, puis de trouver un lien de téléchargement sur la page «cliquée». Mon exemple d'URL est "https://c64g.com/games/" et j'ai réussi à parcourir la liste des liens et à laisser VBA ouvrir chaque lien. Cependant, je ne peux pas laisser VBA identifier combien de fichiers sont sur la page à télécharger car je ne peux pas récupérer ces "éléments" du HTML.VBA - Comment parcourir la liste des liens de téléchargement (webscraping)
Exemple (sélection de la page pour "1942"):
<h1 class="c64u px16">Free C64 Game Download</h1>
<form action="/games/download/get/12" method="post">
<button class="btn-link" type="submit">Download 1942.Elite.+2-BAM.zip (31K)</button>
</form>
<form action="/games/download/get/13" method="post">
<button class="btn-link" type="submit">Download 1942.Elite.+7hpd-REM.zip (38K)</button>
</form>
<form action="/games/download/get/14" method="post">
<button class="btn-link" type="submit">Download 1942.Elite.CFO.zip (27K)</button>
</form>
<form action="/games/download/get/15" method="post">
<button class="btn-link" type="submit">Download 1942_v1.Capcom.+2-MHI.zip (25K)</button>
</form>
<form action="/games/download/get/16" method="post">
<button class="btn-link" type="submit">Download 1942_v2.Capcom.+2p-MHI.zip (37K)</button>
</form>
<script type="text/javascript"><!--
code VBA:
Sub useClassnames()
Dim ie As Object
Dim internetlink As Object
Dim internetinnerlink As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate ("https://c64g.com/games/")
Do While ie.readyState <> READYSTATE_COMPLETE
Application.StatusBar = "Loading Web page..."
DoEvents
Loop
Set internetlink = ie.document.getElementsByTagName("a")
i = 0
For Each internetinnerlink In internetlink
'for testing purposes I want only to open the page for "1942", later all links will be run through
If internetinnerlink.innerText = "1942" Then
internetinnerlink.Click
Exit For
End If
i = i + 1
Next internetinnerlink
Dim alldownloads As Object
'I have tried any kind of name ("btn-group", "button class", btn-link") and element fetch code (by Id, by name, by tagname, by classname)
Set alldownloads = internetlink(i).getElementsByClassName("btn-group")
MsgBox "alldownloads.Length: " & alldownloads.Length
'ie.Quit
End Sub
Toute aide est vraiment apprécié, en particulier pour expliquer pourquoi je ne peux pas saisir tout le texte de la page (par exemple en tant que chaîne de caractères) et que VBA travaille dessus jusqu'à ce qu'il trouve le mot "btn-link". Bien sûr, je dois obtenir chaque lien en tant qu '«élément» ou «élément» (ne sachant pas quel format de données utiliser alors que la chaîne ne serait pas la réponse). Merci d'expliquer comment le faire correctement.