Site en javascript, ajax ? ... source par vba ou autre ?

Fermé
astarius - 30 déc. 2013 à 14:23
dadacourse Messages postés 128 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 5 mars 2023 - 21 janv. 2014 à 06:50
Bonjour à tous et à toutes ...

... et merci beaucoup d'avance pour votre aide.
Je m'en viens solliciter votre aide car les technos de développement web me sont assez obscures. Courant décembre le site français de paris hippiques (pmu) a changé. Malheureusement j'avais commencé à travailler sur un programmer vba qui récupérait la source de la page web et la parsait pour en récupérer des données. Le but étant de m'en faire une petite base de données.

Mais aujourd'hui que le site a changé, lorsque je fais un clic droit et fait « afficher la source », le code ne contient plus les données de la page :-(
A la place j'ai un vieux code qui est censé afficher un texte disant que le javascript de mon navigateur est désactivé. D'ailleurs quand j'enregistre la source puis exécute le fichier, j'ai bien une page indiquant d'activer le javascript en lieu et place des données que j'ai lorsque je suis sur le site du pmu. Je précise au passage que le javascript est bien en permanence activé sur mes navigateurs (IE et firefox). Il me semble que ce soit une astuce du site pour ne pas afficher les données dans le code source.

Il semble que la seule façon d'avoir les données soit d'utiliser la fonction « inspecter élément » du module firebug de firefox.

Mes questions, nombreuses, sont donc les suivantes :
- quelqu'un peut-il déjà me dire quelle est la techno utilisée par le site : javascript, ajax ... ? voici un exemple d'url dont j'aimerais récupérer les données https://www.pmu.fr/turf/#!/26122013
- peut-on contourner l'astuce qui affiche d'activer le javascript au lieu des données ?
- Si non VBA peut-il reproduire la fonction inspecter élément de firebug ?
- Et si VBA n'est pas capable de récupérer les données nouvelle sauce, savez-vous si un autre langage en serait capable ?

Voilà, je vous remercie beaucoup de m'avoir lu jusqu'ici et encore plus si vous pouvez m'aider :-)

Loïc
A voir également:

3 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
30 déc. 2013 à 16:58
'lut, après une petite analyse, les données du planning sont récupérées par AJAX depuis une adresse, comme ceci:
https://www.pmu.fr/turfInfo/client/1/programmes/26122013?meteo=true&specialisation=INTERNET
Là ou le chiffre avant les paramètres correspond à celui à la fin de l'addresse que tu tous a donné
Tu as de la chance qu'ils aient changé je dirais: les données sont au format JSON, qui est quarante milliards de fois plus simple a interpréter et à manipuler qu'un format basé sur XML, HTML inclus. Je vais pas m'étaler sur comment interpréter du JSON en VBA, c'est un peu long, et ce thread sur StackOverflow a une bonne réponse; notamment les réponses proposent de se servir de la librairie vba-json...

Si tu ouvres le JSON dictement, tu verras qu'il n'est pas formaté donc pas facile à lire, colle le contenu dans un éditeur de JSON, tu auras un jouli arbre avec toutes les valeurs, bien plus clair à comprendre.
Repères les valeurs que tu souhaites récupérer, et utilise la librairie JSON que tu utiliseras pour avoir ces valeurs en question
2
Bonjour gravgun,

Tout d'abord merci infiniment pour ton aide ... trop cool :-)
Par contre ce n'est pas la seule page dont je souhaiterais récupérer les infos. En effet une fois les réunions connues, je vais sur chaque course, puis chaque cheval pour avoir toutes ses infos ..... bref pas mal d'infos à aller chercher.

Alors je me demandais s'il t'était possible de m'indiquer comment tu as déterminé l'adresse qui se cachait derrière l'ajax pour que je reproduise l'analyse sur toutes les pages dont je vais avoir besoin ? Est-ce grâce à des connaissances web, un outil particulier .... une boule de cristal ;-) ?

Pour le JSON je vais m'empresser de suivre les infos que tu m'as donné.

Encore un sincère merci pour ton aide

Loïc
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
31 déc. 2013 à 10:51
Firefox intègre un très bon panneau pour développeurs et j'ai utilisé le panneau "Réseau" ("Network"), et regardé ce qui passait par le réseau quand je chargeais la page; après c'est de la déduction, les données transitent souvent dans un format simple quand c'est chargé par AJAX, donc en JSON, XML ou autre.
Le bonus c'est que tu as vraiment toutes les infos sur ce qui circule, incluant ce que le navigateur a envoyé au serveur, ainsi que la réponse de ce dernier, tu peux donc recréer au mieux les conditions normales de navigation dans ton script.
0
dadacourse Messages postés 128 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 5 mars 2023 3
Modifié par dadacourse le 21/01/2014 à 07:48
Bonjour astarius
Je rencontre exactement le même problème depuis le 18 décembre dernier (changement du PMU) et viens tout juste de tomber sur ta question.
La réponse de gravgun est un peu confuse pour moi...
As-tu résolu le problème?... merci de tes infos par avance.

Auparavant, voici la requête utilisée, sachant qu'en A1 est inscrit l'URL https://www.pmu.fr/turf/index.html#21012014/R1/C1

With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & [A1].Value, _
Destination:=Range("$H$1"))
.Name = "index"
.FieldNames = True
.RowNumbers = True
.FillAdjacentFormulas = True
.PreserveFormatting = True
.RefreshOnFileOpen = True
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = True
.WebDisableDateRecognition = True
.WebDisableRedirections = True
.Refresh BackgroundQuery:=True
End With
0