Récupérer une phrase sur un site internet
#1
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 30-05-2023 17h26

Bonjour,

 

Il y a quelques années (25 c'est quelques non? ^^), j'avais fait une demande (la première y en a eu d'autres après) pour la récupération de données sur un site internet.

Mais tout à changé et si à l'époque j'avais réussi a bidouiller quelques bricoles ce n'est vraiment plus le cas maintenant.

 

Déjà à l'époque je pouvais donner le lien de la page directement et c'était bon.
La j'ai l'impression qu'il y a un identifiant de session unique qui s'ajoute à l'url a chaque fois il faudrait donc partir de l'accueil du site et cliquer sur différents lien afin d'arriver sur la bonne page

 

www.dl-ligue.com
Puis sur l'id M21 

 

www.zupimages.net/up/23/21/uxgv.jpg
 

Ce qui nous amène sur une nouvelle page ou il faudrait cliquer sur l'id A9

www.zupimages.net/up/23/21/q08v.jpg

 

On arrive enfin sur la page qui nous intéresse.

Sur le name A1 il faudrait sélectionner la value 2

www.zupimages.net/up/23/21/4m83.jpg

 

Dans le name A3 il faudrait mettre le premier numéro de la colonne A du classeur

Valider en cliquant sur le bouton id A4

 

www.zupimages.net/up/23/21/dco6.jpg

www.zupimages.net/up/23/21/8rn6.jpg

 

Et dans la feuille 2 du classeur récupérer le numéro et le message correspondant qui s'affiche (id tzA5)

www.zupimages.net/up/23/21/qywc.jpg

 

Si le numéro n'existe pas un pop up s'ouvre en indiquant que le numéro n'est pas trouvé

www.zupimages.net/up/23/21/7gc2.jpg

 

Quand on le valide on obtient cela

www.zupimages.net/up/23/21/bgm0.jpg

 

La ce n'est pas nécessaire de le récupérer mais ça serait assez simple de filtrer ce résultat et de le supprimer dans la page 2 du classeur.

 

J'espère avoir été assez clair et que tu pourras, comme à l'époque, me faire quelque chose de génial ^^

 

Merci d'avance.

 

PS: Désolé pour les liens des images je n'ai pas trouvé comment faire autrement.

Pièce jointe:
xlsx Classeur1.xlsx   [ Taille: 11.77 Ko - Téléchargements: 470 ]
Hors Ligne
Rapport   Haut 

Re: Récupérer une phrase sur un site internet
#2
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 31-05-2023 11h38

J'avance un peu ^^

 

J'ai réussi a contourner le problème de l'identifiant de session.
Je me rends sur edge je vais sur le site, je clique sur les liens et je copie l'identifiant de session.
J'actualise le code avec cet identifiant et je peux lancer la macro

 

Sub Excel_Pratique()
navigate = "www.dl-ligue.com/DL-ligue/menu_CDF/1BEAAJ_V2xEMAA";
Shell ("C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe -url " & navigate)
End Sub

Ça fonctionne parfaitement bien youhou!!!

Maintenant l'étape suivante c'est de cliquer sur un élément de la page le fameux id=A9

 

J'ai essayé ça

Sub Excel_Pratique()
navigate = "www.dl-ligue.com/DL-ligue/menu_CDF/mAYAAPkG4hEGAA";
Shell ("C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe -url " & navigate)

    Dim element As WebElement
    Set element = FindElementByID("A9")

    element.Click

End Sub

Et vous savez quoi???
Bah ça ne fonctionne pas ^^

je continu de chercher ;)

 

[EDIT]
J'ai tenté quelques getElementByID mais j'ai toujours une erreur au lancement du code
Dans les codes cités au-dessus un ; est à la fin de la ligne "navigate" mais il ne faut pas les mettre sinon ça retourne une erreur également

Edité par Icedarts le 31/05/2023 13:23:56
Hors Ligne
Rapport   Haut 

Re: Récupérer une phrase sur un site internet
#3
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 31-05-2023 21h31

Grande avancée aujourd'hui.

Alors en farfouillant a droite a gauche j'ai trouvé un code qui fonctionne, bon il fonctionne sur IE mais ça c'est pas grave lol

Et j'ai eu une idée pour contourner tous les problèmes d'identifiants de session et de clique sur des liens javascript.
J'ai tout simplement mis une pause dans le code et je le fais moi-même ^^

 


Sub test()


   Dim IE As Object
    Dim IEdoc As Object
    Dim DOCelement As Object


   Set IE = CreateObject("InternetExplorer.Application")


   IE.Visible = True


   IE.Navigate ("www.dl-ligue.com")


Call pause


   Do Until IE.ReadyState = 4
        DoEvents
    Loop

   Set IEdoc = IE.document


   Set DOCelement = IEdoc.getElementsByName("A3").Item
    DOCelement.Value = "48001"




   Set DOCelement = IEdoc.getelementsbytagname("button")(12) 'Forms(0)
   DOCelement.Click


   Set IE = Nothing

   End Sub
Sub pause()
Application.Wait Now() + TimeValue("00:00:10")
End Sub

Prochaine étape dire à la macro de prendre les valeurs pour "A3" dans la première colonne de la première feuille du classeur et de les tester un par un

puis de copier coller le résultat dans la première colonne de la feuille 2.

 

Ça ne va pas être une mince affaire ^^

Hors Ligne
Rapport   Haut 

Re: Récupérer une phrase sur un site internet
#4
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 31-05-2023 22h06

J'ai encore avancé un peu mais la je bloque.

 

Sub test()

    Dim IE As Object
    Dim IEdoc As Object
    Dim DOCelement As Object
    Static L As Long

    Set IE = CreateObject("InternetExplorer.Application")

    IE.Visible = True

    IE.Navigate ("www.dl-ligue.com")

    Call pause

    Do Until IE.ReadyState = 4
        DoEvents
    Loop

    Set IEdoc = IE.document

    If Cells(1, 1) Then L = 0
        L = L + 1
        With DOCelement
        Set DOCelement = IEdoc.getElementsByName("A3").Item
        DOCelement.Value = Cells(L, 1).Text
        Set DOCelement = IEdoc.getelementsbytagname("button")(12)
        DOCelement.Click
        End With
 
    If Cells(L + 1, 1) <> "" Then MsgBox ("Traitement terminé !")

    Set IE = Nothing

End Sub
Sub pause()
      Application.Wait Now() + TimeValue("00:00:10")
End Sub

Je n'arrive pas a faire comprendre à la macro qu'après avoir testé le numéro en A1 il faut qu'elle passe à A2 puis A3 etc etc jusqu'à ce que la colonne soit vide.
La elle fait A1 et j'ai le message "traitement terminé"

Pièce jointe:
xlsm test.xlsm   [ Taille: 20.50 Ko - Téléchargements: 133 ]
Hors Ligne
Rapport   Haut 

Re: Récupérer une phrase sur un site internet
#5
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 05-06-2023 14h12

Bonjour a tous,

Je suis arrivé a mes fins mais je bloque sur quelque chose
Je récupère les données dans la fenetre execution de l'éditeur VBA ça pourrait le faire si on pouvait y mettre énormément de ligne lol
La je suis bloqué à une centaine de numéro car le résultat est sur 2 lignes.

Bref pas pratique.

Si je pouvais récupérer ça dans la feuille 2 du classeur ça serait top.

Merci d'avance pour l'aide

 

Sub recup()
    Dim IE As Object
    Dim IEdoc As Object, Res As Object
    Dim DOCelement As Object, FrameLeftDoc As Object
    Dim Championnat As Object, NumEquipe As Object, btnValider As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate ("www.dl-ligue.com")
    WaitIE IE
    Set IEdoc = IE.document
    Set FrameLeftDoc = IEdoc.frames("leftframe").document
    Set DOCelement = FrameLeftDoc.All("M21")
    DOCelement.Click
    WaitIE IE
    Set IEdoc = IE.document
    Set FrameLeftDoc = IEdoc.frames("leftframe").document
    Set DOCelement = FrameLeftDoc.All("A9")
    DOCelement.Click
    WaitIE IE
    Set IEdoc = IE.document
    Set Championnat = IEdoc.All("A1")
    Championnat.Value = "2"  'Choix menu déroulant
    
Dim Derlig&
Derlig = Range("A" & Rows.Count).End(xlUp).Row

For i = 1 To Derlig
    If Cells(i, 1) Then
        With DOCelement
            Set DOCelement = IEdoc.getElementsByName("A3").Item
            DOCelement.Value = Cells(i, 1).Text
            Set btnValider = IEdoc.All("A4")
            btnValider.Click

    
            WaitIE IE
            Application.Wait Now() + TimeValue("00:00:01")
            Set Res = IEdoc.All("tzA5")
            Debug.Print Res.innerText
        End With
    End If
Next i
 
If Cells(i, 1) <> "" Then MsgBox ("Traitement terminé !")
        



    
    If Cells(L + 1, 1) <> "" Then MsgBox ("Traitement terminé !")
    
    Application.Wait Now() + TimeValue("00:00:10")
    IE.Quit
    Set IE = Nothing
End Sub

Sub WaitIE(IE As Object)
   'On boucle tant que la page n'est pas totalement chargée
   Do Until Not IE.Busy And IE.readyState = 4
      Application.Wait Now() + TimeValue("00:00:01")
      DoEvents
   Loop
End Sub

 

Pièce jointe:
xlsm Classeur1.xlsm   [ Taille: 20.34 Ko - Téléchargements: 139 ]
Hors Ligne
Rapport   Haut 

Re: Récupérer une phrase sur un site internet
#6
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 05-06-2023 18h36

Grosse amélioration du code.

 

Sub recup()
    Dim driver As WebDriver
    Dim LeftFrame As WebElement, Lien As WebElement
    Dim Championnat As WebElement, NumEquipe As WebElement, NumJoueur As WebElement
    Dim btnConsult As WebElement, btnValider As WebElement, Res As WebElement
    Dim i As Long, Infos() As String
    Set driver = New WebDriver
    driver.Edge "D:\OneDrive\Bureau\webdriver\msedgedriver.exe"
    driver.OpenBrowser
    driver.SetTimeouts 30000, 30000, 10000
    driver.NavigateTo "www.dl-ligue.com"
    driver.MaximizeWindow
    Set LeftFrame = driver.FindElement(name, "leftframe")
    driver.SwitchToFrame LeftFrame
    Set Lien = driver.FindElement(ID, "M21")
    Lien.Click
    Set btnConsult = driver.FindElement(ID, "A9")
    btnConsult.Click
    Set Championnat = driver.FindElement(ID, "A1")
    Set NumJoueur = driver.FindElement(ID, "A2")
    Set NumEquipe = driver.FindElement(ID, "A3")
    Set btnValider = driver.FindElement(ID, "A4")
    Set Res = driver.FindElement(ID, "tzA5")
    Championnat.SendKeys "Indiv"
    On Error Resume Next
    For i = 1 To 200
        NumJoueur.Clear
        NumJoueur.SendKeys CStr(Cells(i, 1).value)
        btnValider.Click
         If InStr(1, Res.GetText, "%1") Then
            Debug.Print CStr(NumJoueur.GetProperty("value")), " : ", " - "
         Else
            Infos = Split(Res.GetText, vbCrLf)
            Debug.Print CStr(NumJoueur.GetProperty("value")) + " : " + _
            Infos(0) + " -> " + Infos(1)
         End If
    Next i
    On Error GoTo 0
    Application.Wait Now() + TimeValue("00:00:2")
    driver.MinimizeWindow
    driver.CloseBrowser
    driver.Quit
    Set driver = Nothing
 
 
End Sub

mais la il a fallu installer selenium et le webdriver d'edge.

ça vient bon!!!

Plus que l'étape de la récupération des données en feuil2

Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   2 Utilisateur(s) anonymes