[HTML-->VBA] Extraction de données / div elements
Bonjour,
Pour faire bref, je débute en VBA, je ne maîtrise absolument pas le langage HTML et je cherche à développer une macro me permettant d'extraire automatiquement un certain nombre de données à partir d'un site web.
La partie de code HTML qui m'intéresse pour le moment est la suivante :
<table id="playersStatsTable" class="players-stats-table">
<tbody>
<td class="overview-year">
<div>
2018
</div>
</td>
<td colspan="1">
<div data-singles="1" data-doubles="0" class="stat-value">
1
</div>
<div>
Rank
</div>
</td>
Source du code : https://www.atpworldtour.com/en/players/rafael-nadal/n409/overview
Ce que je souhaite obtenir, ce sont les valeurs associées à "data-singles" et à "data-doubles".
Avec ces quelques lignes, j'arrive à un résultat proche de celui que j'aimerais obtenir :
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "https://www.atpworldtour.com/en/players/rafael-nadal/n409/overview"
Do While ie.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
Dim HTMLDoc As HTMLDocument
Set HTMLDoc = ie.document
PlayerRank = HTMLDoc.getElementById("playersStatsTable").getElementsByTagName("td")(1).innerHTML
MsgBox PlayerRank
N.B: Je cherche ici à associer la variable "PlayerRank" à la valeur "data-singles".
En effet, ça me permet d'obtenir le message suivant en Message Box :
<div data-singles="1" data-doubles="0" class="stat-value">
1
</div>
<div>
Rank
</div>
Et avec quelques lignes de code supplémentaires, il me serait possible de récupérer les valeurs qui m'intéressent (en l’occurrence, que PlayerRank soit égal à "data-singles"). Mais j'aimerais trouver un moyen plus direct d'obtenir les valeurs que je souhaite. J'ai essayé la chose suivante mais ça ne marche pas et me renvoie une erreur d'exécution (94).
[...]
Dim HTMLDoc As HTMLDocument
Set HTMLDoc = ie.document
PlayerRank = HTMLDoc.getElementById("playersStatsTable").getElementsByTagName("td")(1).getAttribute("data-singles")
MsgBox PlayerRank
En espérant avoir été suffisamment clair. Merci d'avance.
Bonjour,
tu peux aussi faire un split(split(PlayerRank,">")(1),"<")(0)