Import avec URL variables

Bonjour à tous

J’utilise beaucoup excel pour différents tableaux

Depuis quelque jour je me crée une base de données sur les courses pmu

Et péniblement une à une sur le site GENY courses j’enregistre les données suivantes :

Date, Hippodrome, Favoris, gagnant avec son rapport puis les 5 n° du quintés

Ainsi je souhaiterais remonter jusqu’en 2002

Mais ni aurait-il pas une solution plus rapide avec le programme VBA pour créer automatiquement cette base de données depuis 2002 à ce jour et pour ensuite continuer au-delà en choisissant les dates d’import.

Je n’ai jamais fait de programmation en VBA si quelqu’un pouvait m’aider.

Ci-joint un fichier excel montrant le tableau souhaité ainsi que les images des 2 pages web utilisées avec les liens correspondants

Merci beaucoup pour votre aide

Cordialement

knoc

favoris rapport
59import.xlsx (10.70 Ko)

bonjour

dans un fil d'il y a qq semaines, il me semble que les sites en question changent régulièrement leur structure pour qu'on ne puisse pas les requêter à l'oeil. Inutile de passer du temps à trouver une solution qui buggera dans 1 ou 3 mois.

ils ne proposent pas un abonnement pour te permettre de récupérer les données ?

à te relire

Bonjour

Merci pour ta réponse

Non pour l'historique des courses il n'y a pas d'abonnement !

Oui c'est vrai tu as certainement raison la structure changera peut être mais si j'avais déjà une procédure pour importer rapidement les données depuis 2002 ce serais pas mal.

Pour la suite je pourrais le faire manuellement de jour en jour .

Cette base de donnée pourrait me permettre de faire quelques statistiques sur les rapports gagnants et aussi sur le nombre de fois que le favoris termine premier suivant peut être l'hippodrome etc ...

Quand pense tu ?

Cordialement

re

désolé, je ne le ferai pas. Ce serait une infraction.

En tant que pro de l'informatique, je considère que si on protège son travail (et qu'on fait vivre sa famille avec) on ne doit pas être copié.

http://www.geny.com/conditions-generales

L'Utilisateur ne devra pas modifier, copier, reproduire, re-publier, télécharger...

Bonjour,

1- as-tu essayé PowerQuery ?

2- comment établis-tu la liste des URL depuis 2002


Maintenant il faut respecter les droits d'auteur ... comme le rappelle jmd

L'Utilisateur ne devra pas modifier, copier, reproduire, re-publier, télécharger, poster, transmettre, vendre ou distribuer, de quelque manière que ce soit, de tels contenus

pour le copier et télécharger, si c'est à des fins personnelles et qu'il est fait usage de méthodes non "hacking" c'est à toi de voir ...

Re

non je n'ai pas essayé avec power Query je ne m'y connais pas assez pour cela.

Je ne savais pas comme le dis JMD que c'étais une infraction c'était simplement a des fins personnelles pour faire quelques stats et non pas du piratage a distribuer a qui que se soit.

je pense que c'est très difficile de programmer ce genre de chose étant donné que l'URL est variables au niveau de la date, sur l'hippodrome ainsi que sur et le prix de la course

on peut trouver l'URL en cliquant sur la date recherché dans le calendrier et ensuite sur cote et rapport

mais je pense que c'est vraiment compliqué

désolé de vous avoir dérangé mais je vais laissé tomber

Merci pour vos réponses

je pense que c'est très difficile de programmer ce genre de chose étant donné que l'URL est variables au niveau de la date, sur l'hippodrome ainsi que sur et le prix de la course

Si tu souhaites récupérer les URLs pour un jour donné, voici un outil qui respecte la charte puisqu'il n'y a pas de données source.

Tu peux filtrer en précisant "contient ..."

150geny-url.xlsm (23.47 Ko)

Bonjour Steelson

Super on récupère parfaitement les URL a une date choisi

Je ne comprend pas bien les lignes de code pourrais tu m'expliquer ?

Pour importer les données précises comme le favoris et le gagnant du quinté il faut connaitre les coordonnées "variables" de chaque éléments pourrais tu me mettre sur la piste ?

Merci pour ton travail

Je ne comprend pas bien les lignes de code pourrais tu m'expliquer ?

Plus globalement, pour interroger un site il y a plusieurs méthodes :

1- ouvrir la page dans un userform

ce que tu as dû expérimenter au début, mais je ne sais pas comment récupérer les infos et les scripts font hurler excel

2- utiliser PowerQuery, la Rolls

mais cela va bien pour avoir les favoris par exemple https://forum.excel-pratique.com/viewtopic.php?p=702283#p702283 mais pas du tout pour la page d'en-tête ! rien, nada !

3- faire digérer le site et interroger vie GetElementByX

il s'agit de l'utilisation des propriétés du DOM

on peut le faire de 2 façons ici :

- soit interroger par .getElementsByTagName("a") mais c'est un peu la foire-fouille ...

- soit interroger par .getElementsByTagName("li") mais je n'ai récupéré que le texte du lien, pas le lien lui-même !

4- traiter directement le texte

c'est moins élégant, mais plus rapide et efficace à 99% (il n'y a que les cas où les données sont issues de javascript avec interrogation à distance que cela devient complexe !)

donc je pratique allègrement le saucissonnage à coups de split

grosso modo :

ma_tranche_de_saucisson = split(split(mon_texte , texte_juste_avant)(1) , texte_juste_apres)(0)

d'où pour ici :

Sub adresses()
Dim tbl

    ' effacement des lignes à partir de la deuxième sous la zone appelée www
    Range("www").CurrentRegion.Offset(2, 0).ClearContents

    On Error Resume Next
    DoEvents
    With CreateObject("MSXML2.XMLHTTP")
        ' requête web, l'URL est contenu dans la zone www
        .Open "GET", [www].Value, False
        .Send
        If .Status = 200 Then
            ' on récupère la page html (.responseText) que l'on va saucissonner à coups de couteau split !
            ' je découpe la page au niveau de <li class=" btnCourse"> (attention à bien doubler les ")
            tbl = Split(.responseText, "<li class="" btnCourse"">")

            ' pour chaque élément du saucisson, sauf le début de la page html, donc à partir du second élément ...
            For i = LBound(tbl) + 1 To UBound(tbl)
                ' je prend le texte avant </li>
                ' et ensuite je cherche le texte entre href=" et " (attention à bien doubler les ")
                ' auquel j'ajoute la racine du site web pour reformer l'url complète
                Cells(i + 2, 1) = "http://www.geny.com" & Split(Split(Split(tbl(i), "</li>")(0), "href=""")(1), """>")(0)
            Next
        End If
    End With

End Sub

le tour est joué, on peut du reste filtrer sur les liens qui nous intéressent (like "*cotes", like "*rapport*")

5- les sites renvoient parfois du json ou du xml, c'est un autre sujet !

Pour importer les données précises comme le favoris et le gagnant du quinté il faut connaitre les coordonnées "variables" de chaque éléments pourrais tu me mettre sur la piste ?

Il faut bien analyser le code source et détecter les éléments discriminants ...

Pour traiter un jour, il faut environ 60 requêtes web ... tu risques d'être vite repéré par ton IP en faisant de la recherche sur un mois, a fortiori sur 1 an ou plus !!

Même si j'ai fait l'exercice, je ne posterai pas plus loin. Pourtant, l'interrogation, d'une seule journée pourrait s'apparenter à un site agrégateur (comme https://www.netvibes.com/fr par exemple, tiens cela fait longtemps que je en l'ai plus utilisé !). Une sorte de navvigateur un peu plus intelligent ! à la carte ...

Tout au plus, voici une fonction de saucissonnage :

Function trancher(texte As String, avant As String, apres As String, i As Integer) As String
    trancher = ""
    On Error Resume Next
    trancher = Split(Split(texte, avant)(i), apres)(0)
End Function

à ce stade,

Re Michel

J'ai maintenant compris partiellement le principe de l'import il faut encore que j’analyse cela de plus prés !

Dans mon cas l'extraction depuis 2002:

De l'URL, la date, l'hippodrome, le favoris , le gagnant avec son rapport, et les

4 autres numéros pour seulement la course du quinté (ligne marron sur le site) me suffirait amplement pour faire quelques prévisions de sorti du numéro suivant

Car sinon la base de donnée risque d’être trop lourde a manipuler.

Merci Cdl

Philippe

cote1

Pour l'hippodrome, je suis resté perplexe !! ... je vais voir comment on peut faire facilement !!

Rechercher des sujets similaires à "import url variables"