Macro pour connexion login/mdp + extraction données web
Bonjour!
Cette fois je viens à vous non pas pour du travail mais pour du loisir!
En effet je suis passionné de foot et de stats, et aimerais importer des données d'un site web sur lequel j'ai un compte pour traiter les différentes statistiques par le biais d'Excel.
Je souhaiterais importer en "feuil1" d'un classeur Excel, la page web : "https://footystats.org/tomorrow/" mais seulement après m'être connecté avec login et mot de passe sur "https://footystats.org/login".
En effet la page "https://footystats.org/tomorrow/" apparait avec plus de statistiques si on est connecté avec login et mot de passe.
J'ai examiné le code de la page html et il semblerait que "username" soit le champs pour le login et "password" le champs pour le mot de passe.
J'ai commencé quelque chose en m'inspirant de ce que j'ai pu trouver sur le net, mais je bloque...
Pour information je suis sur Excel 2016.
Sub Connexion()
'Dim ie As InternetExplorer
Dim IEdoc As Object
Dim DOCelement As Object
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
ie.Navigate ("https://footystats.org/login")
' attente de fin de chargement
Do Until ie.ReadyState = 4
DoEvents
Loop
Set IEdoc = ie.Document
'password
Set Username = IEdoc.getelementsbyname("username").Item
Set Password = IEdoc.getelementsbyname("password").Item
UserId.Value = "xxxxxxx" :
Password.Value = "xxxxxxxx" :
Re-bonjour,
Par ailleurs en plus d'un bouton qui me connecte automatiquement à mon compte FootyStats, et importe la page, il faudrait que lors de l'importation les menus déroulants de certains championnats en bas de page qui par défaut sont masqués soient rendus visibles.
J'ignore s'il est possible de réaliser cette manipulation...
Bon je progresse petit à petit mais il y a de l'avancement.
J'arrive à me connecter automatiquement, mais je ne parviens pas à copier la page internet que je souhaite (https://footystats.org/tomorrow/) après connexion, sur une feuille du classeur.
Ce que j'obtiens et la page par défaut et non la page pour les identifiés.
Ci dessous mon code à ce jour.
Help me!
Sub Macro2()
'
' Macro2
'
Sheets("Feuil1").Cells.Clear
Dim i As SHDocVw.InternetExplorer
Set i = New InternetExplorer
i.Visible = True
i.navigate ("https://footystats.org/login")
Do While i.readyState <> READYSTATE_COMPLETE
Loop
Dim idoc As MSHTML.HTMLDocument
Set idoc = i.document
idoc.all.UserName.Value = "tapeidentifiant"
idoc.all.Password.Value = "tapemotdepasse"
Dim ele As MSHTML.IHTMLElement
Dim eles As MSHTML.IHTMLElementCollection
Set eles = idoc.getElementsByTagName("button")
For Each ele In eles
If ele.ID = "register_submit" Then
ele.Click
Else
End If
Next ele
With Sheets("feuil1").QueryTables.Add(Connection:="URL; https://footystats.org/tomorrow/", Destination:=Sheets("feuil1").Range("A1"))
.BackgroundQuery = True
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=False
End With
End Sub
Le code html du bouton à cliquer est:
<a class="button" href="/tomorrow/">Tomorrow</a>
J'ai essayé d'intégrer la ligne suivante mais rien n'y fait...
Document.getElementsByTagName("a")(2).click
Puis une fois ce bouton cliqué je souhaiterais importer la page en "feuil1"
Pour information et parce que je juge utile de le préciser:
Sauf erreur de ma part, il n'est pas mentionné dans les GCU du site l'interdiction de réaliser l'extraction de ce type de données.
Je tiens également à rajouter que l'extraction que je souhaite faire est strictement réservée pour un usage personnel et non lucratif.
J'ai encore un peu avancé, mais je bloque à ce niveau:
Sub Macro2()
'
'
' Macro2
'
Sheets("Feuil1").Cells.Clear
Dim i As SHDocVw.InternetExplorer
Set i = New InternetExplorer
i.Visible = True
i.navigate ("https://footystats.org/login")
Do While i.readyState <> READYSTATE_COMPLETE
Loop
Dim idoc As MSHTML.HTMLDocument
Set idoc = i.document
idoc.all.UserName.Value = "identifiant"
idoc.all.Password.Value = "mdp"
Dim ele As MSHTML.IHTMLElement
Dim eles As MSHTML.IHTMLElementCollection
Set eles = idoc.getElementsByTagName("button")
For Each ele In eles
If ele.ID = "register_submit" Then
ele.Click
Else
End If
Next ele
i.navigate ("https://footystats.org/tomorrow/")
Do While i.readyState <> READYSTATE_COMPLETE
Loop
MsgBox i.LocationURL
With Sheets("feuil1").QueryTables.Add(Connection:= _
"URL;" & i.LocationURL, Destination:=Sheets("feuil1").Range("A1"))
.Name = "xx"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
Le code ci dessus m'importe la page comme lorsque je ne suis pas connecté... Désespérant..