Macro recuperer donnée site web

J'ai réussi à y rentrer !!

Les données ne sont plus données directement dans le code source, seul le cadre est décrit :

                        <div data-aos="zoom-in" style="width: 300px;margin:  0 auto;">
                            <div style="float: left; width: 100px; border-right:1px solid #FFFFFF30;">
                                <h3 id="num_followers" style="color: white; font-size: 16px; margin-top: 6px;margin-bottom: 1px; ">
                                    0</h3><h4 style="color: white; font-size: 17px;margin-top: 6px;">Followers</h4></div>
                            <div  style="float: left; width: 100px;border-right:1px solid #FFFFFF30;" >
                                <h3 id="num_following" style="color: white; font-size: 16px; margin-top: 6px;margin-bottom: 1px;">
                                    0</h3><h4 style="color: white; font-size: 17px;margin-top: 6px;">Following</h4></div>
                            <div style="float: left; width: 100px; margin:0px">
                                <h3 id="num_media" style="color: white; font-size: 16px; margin-top: 6px;margin-bottom: 1px;">
                                    0</h3><h4 style="color: white; font-size: 17px;margin-top: 6px;">Posts</h4></div>
                            <br style="clear: left;">
                        </div>

Elles sont ensuite rechargées en asynchrone ("ajax")

$.ajax

et ne sont donc plus visibles dans le code

                                {data: 'index'},
                                {data: 'date'},
                                {data: 'follower'},
                                {data: 'delta_follower'},
                                {data: 'following'},
                                {data: 'delta_following'},
                                {data: 'count_media'},
                                {data: 'delta_media'}

PowerQuery ne donne pas mieux non plus !

Conclusion : le site s'est blindé ! je crains qu'il ne faille faire une croix dessus.

capture d ecran 217

J'ai essayé une autre méthode, mais le site est tellement peu réactif (le code est aussi extrêmement lourd) que cela ne fonctionne pas non plus de façon répétitive ! même avec une grosse temporisation.

Désolé !

5ninjalitics.xlsm (19.43 Ko)

Non, cest juste que le nom a changé, ce nest plus Skadi.the.bordercollie mais Skadi2020

Normalement ca devrait etre la meme chose avec les liens, il y a pas d'épate suplementaire.

PowerQuerry je connais pas du tout Jutilisais ton fichier jusqua maintenant et genial

@steelson; si on essaye avec un autre site?

Par exemple un de ces sites:

En prennant juste le total follwers et engagement rate?

Bonjour,

Sub interrogation()

For j = 2 To 4 ' colonne
On Error Resume Next
    DoEvents
    URL = Cells(2, 1)
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", URL, False
        .Send
        If .Status = 200 Then
            texte = Split(.responseText, Cells(1, j))(1)
            texte = Split(Split(texte, "<p class=""report-header-number"">")(1), "</p>")(0)
        End If
    End With
    Cells(2, j) = texte
Next

End Sub
11igstats.xlsm (17.03 Ko)

Genial Steelson; merci beaucoup!

En revanche je dois changer quoi dans le code pour avoir seulement le total follower et engagement rate ? (pas besoin de uplaod)

Et aussi; j'ai l impression que la macro se met en route a l'ouverture du fichier, ca serait possible qu'elle de mette en route en cliquant sur un bouton?

Bonne année

En revanche je dois changer quoi dans le code pour avoir seulement le total follower et engagement rate ? (pas besoin de uplaod)

change ceci
For j = 2 To 3 ' colonne

et supprime la colonne du milieu

Et aussi; j'ai l impression que la macro se met en route a l'ouverture du fichier, ca serait possible qu'elle de mette en route en cliquant sur un bouton?

Va dans l'explorateur de macro (Alt+F11), clique sur Thisworkbook à gauche et efface le contenu à droite

Pour le bouton, je te laisse faire ? insertion forme et affecter une macro ...

Okay; cest bon j'ai modifié; merci! Par contre j'ai mis tous mes liens dans la colone; et la macro ne prends que la premiere ligne :/

Fais une boucle sur la ligne ...

Sub interrogation()

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

For j = 2 To 4 ' colonne
On Error Resume Next
    DoEvents
    URL = Cells(i, 1)
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", URL, False
        .Send
        If .Status = 200 Then
            texte = Split(.responseText, Cells(1, j))(1)
            texte = Split(Split(texte, "<p class=""report-header-number"">")(1), "</p>")(0)
        End If
    End With
    Cells(i, j) = texte
Next

Next

End Sub

Bonjour,

Bonjour Steelson.

Une proposition Power Query.

Pour Excel 2010, nécessite de télécharger le complément gratuit Microsoft.

Malgré que les données ne soient sous forme de table, il y a une astuce.

L'actualisation se fait à l'ouverture du fichier.

A te relire.

Cdlt.

9igstats-v2.xlsm (26.27 Ko)

Jean-Eric, est-il possible d'enchaîner plusieurs requêtes pour répondre à cette demande ?

j'ai mis tous mes liens dans la colone; et la macro ne prends que la premiere ligne :/

c'est-à-dire prendre ne compte plusieurs URL !

Re,

@Steelson,

Certainement, mais il faut que les liens pointent vers un même site avec des noms d'utilisateurs différents.

Il suffira de lister les URLs dans un tableau.

Du moins je pense !? De ce que je comprends avec PQ, c'est qu'il transforme la page en fichier texte.

On traite ensuite les chaînes de caractères comme dans Excel (avec ou sans VBA).

On manipule les strings.

Un exemple avec quelques explications.

Cdlt.

De ce que je comprends avec PQ, c'est qu'il transforme la page en fichier texte.

On traite ensuite les chaînes de caractères comme dans Excel (avec ou sans VBA).

On manipule les strings.

In fine c'est ce que je fais en splittant. Je trouve que PowerQuery est moins réactif que de le faire en direct.
Rechercher des sujets similaires à "macro recuperer donnee site web"