Importer sous Excel des données d'un site Web dynamique
Bonjour,
je cherche à automatiser la récupération de données sur internet. En farfouillant pas mal, j'ai trouvé le principe de requête web qui semble répondre à mes attentes (mais peut-être pas?).
Je souhaite récupérer des données qui se trouvent sur le site :
Si vous allez voir le lien, vous verrez qu'il y a des listes où il faut sélectionner une valeur :
On nous demande de choisir un département
On nous demande de choisir une commune dans le département
On nous demande le type d'information souhaitéE
Une fois les valeurs choisies, on a trois jolis tableaux avec toutes les infos qu'on veut.
Le problème est qu'en passant par la requête Web, je n'arrive pas à récupérer ces tableaux.
Par ailleurs, je souhaite avoir ces tableaux pour toutes les commune du département (Haute-Garonne), je souhaite donc automatiser le procéssus.
Quelqu'un peut-il me dire si c'est possible avec la requête web et, si ça ne l'est pas, me proposer une autre solution?
Merci par avance!!
Un lien à suivre, la solution est peut être là :
Cordialement,
Oui merci, j'étais allé voir.
Le problème des requêtes Web est qu'elles ne gèrent pas les pages où il faut faire des sélections (méthode GET en PHP si j'ai bien compris) : si on reprend l'adresse dont j'ai fait mention plus haut, une fois qu'on effectue sa sélection, on visualise une page différente mais qui a la même adresse. Si bien que lorsqu'on effectue une requête Web, on obtient le contenu de la première page alors que nous souhaitons la deuxième...
bonsoir
Une procédure pour débuter :
'Nécesssite d'activer les références
'Microsoft HTML Objects Library
'et
'Microsoft Internet Controls
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Hsel As IHTMLElementCollection, Helem As IHTMLElementCollection
Dim winShell As New ShellWindows
Dim Valeur As Date
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "http://sitadel.application.equipement.gouv.fr/SitadelWeb/Sitadel"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Hsel = maPageHtml.getElementsByTagName("select")
'Sélectionne l'ardèche (7eme element dans la 1ere liste)
Hsel(0).selectedIndex = 6
'Déclenche la fonction dans la page html
maPageHtml.parentWindow.execScript "SelectionDept();", "javascript"
Valeur = Timer 'temporisation pour le rafraichissement de la page
Do While Timer < Valeur + 2
DoEvents
Loop
Set IE = winShell(winShell.Count - 1)
Set maPageHtml = IE.document
Set Hsel = maPageHtml.getElementsByTagName("select")
'Sélectionne Albon (6eme element dans la 2eme liste)
Hsel(1).selectedIndex = 5
Valeur = Timer 'temporisation pour le rafraichissement de la page
Do While Timer < Valeur + 2
DoEvents
Loopensuite je suis bloqué car je n'arrive pas à déclencher la fonction javaScript :
function Deplacer(l1,l2)Deplacer(document.sitadelcom.liste_communes,document.sitadelcom.sel_communes)J'espère que ça pourra deja t'aider ...
bonne soirée
michel
Merci beaucoup, je pense que ça va m'être précieux.
Peux-tu juste m'expliquer ce que fait la partie javascript pour que j'essaye de trouver la réponse? J'avoue que ton niveau en développement est largement supérieur au mien donc j'avoue que je ne comprend pas tout...
Encore merci et n'hésites pas à me prévenir si tu trouves la fin de la solution!
Je viens d'essayer le code, merci, ça m'a fait avancé d'une étape (sélection de la commune).
Petite question supplémentaire : les deux lignes de code
function Deplacer(l1,l2)
et
Deplacer(document.sitadelcom.liste_communes,document.sitadelcom.sel_communes)
Doivent être mises à la suite?
Je vais me pencher dessus mais pour info, après avoir sélectionné la commune, je dois ensuite sélectionner "Mise en chantier" et non"Autorisations".
Encore merci