Récupérer des données sur un site internet à stocker dans Numbers.

BenCD

Membre junior
1 Mai 2019
15
0
29
Bonjour à tous,

Je me permets de vous écrire car je suis très très novice dans l'utilisation d'AppleScript et sa "programmation".

Après de nombreuses heures de recherches infructueuses je me permets de vous demander de l'aide.

Je vous explique mon objectif en espérant être le plus clair possible.

Je souhaite pour trois parités, aller "chercher/récupérer" des données sur le site suivant :

https://fr.investing.com/currencies/eur-usd-historical-data (ici pour la parité "eur/usd")
https://fr.investing.com/currencies/eur-cad-historical-data (ici pour la parité "eur/cad")
https://fr.investing.com/currencies/eur-aud-historical-data (ici pour la parité "eur/gbp)

Pour chacune des parités je souhaite récupérer les informations suivantes :

  • Dernier
  • Ouverture
  • Plus haut
  • Plus bas

Et cela pour le 4 derniers jours (au moment ou j'écris, du 13/01/21 au 08/01/21).

Et "mettre" ces données dans un tableau, dans un onglet spécifique (DONNEES), d'un document Numbers déjà existant (chemin : /Users/Ben/Desktop/DONNEES & GRAPHIQUES.numbers).

Je mets en pièce jointe une image de la "forme du tableau".

Capture d’écran 2021-01-12 à 21.46.25.png

Voilà, j'espère avoir été le plus clair possible,

Merci d'avance pour votre aide, n'hésitez pas à me demander des éclaircissements si besoin!

Ben
 

zeltron54

Membre d’élite
29 Mars 2008
2 149
335
Lorraine
Bonsoir,
Je t'ai fais un script qui fais ça (pas optimisé, mais bon)
Il va te paraître long car j'ai mis des délais pour l'ouverture des pages web (4 sec pour l'ouverture de safari plus 2 sec par ouverture de page ) car chez moi ma connexion est très lente...
Dis moi si cela fonctionne !

Bloc de code:
tell application "Safari"
    open location "https://fr.investing.com/currencies/eur-usd-historical-data"
    delay 4
    set letexte to (the text of the front document)
end tell
tell application "Finder"
    set lesmots to words of letexte
    repeat with i from 1 to count of lesmots
        if item i of lesmots is "Dernier" then set nb to i
    end repeat
    set dernierusd to word (nb + 10) in letexte
    set ouvertureusd to word (nb + 11) in letexte
    set plushautusd to word (nb + 12) in letexte
    set plusbasusd to word (nb + 13) in letexte
    set dernier1usd to word (nb + 18) in letexte
    set ouverture1usd to word (nb + 19) in letexte
    set plushaut1usd to word (nb + 20) in letexte
    set plusbas1usd to word (nb + 21) in letexte
    set dernier2usd to word (nb + 26) in letexte
    set ouverture2usd to word (nb + 27) in letexte
    set plushaut2usd to word (nb + 28) in letexte
    set plusbas2usd to word (nb + 29) in letexte
    set dernier3usd to word (nb + 34) in letexte
    set ouverture3usd to word (nb + 35) in letexte
    set plushaut3usd to word (nb + 36) in letexte
    set plusbas3usd to word (nb + 37) in letexte
    
end tell

tell application "Safari"
    open location "https://fr.investing.com/currencies/eur-cad-historical-data"
    delay 2
    set letexte to (the text of the front document)
end tell
tell application "Finder"
    set lesmots to words of letexte
    repeat with i from 1 to count of lesmots
        if item i of lesmots is "Dernier" then set nb to i
    end repeat
    set derniercad to word (nb + 10) in letexte
    set ouverturecad to word (nb + 11) in letexte
    set plushautcad to word (nb + 12) in letexte
    set plusbascad to word (nb + 13) in letexte
    set dernier1cad to word (nb + 18) in letexte
    set ouverture1cad to word (nb + 19) in letexte
    set plushaut1cad to word (nb + 20) in letexte
    set plusbas1cad to word (nb + 21) in letexte
    set dernier2cad to word (nb + 26) in letexte
    set ouverture2cad to word (nb + 27) in letexte
    set plushaut2cad to word (nb + 28) in letexte
    set plusbas2cad to word (nb + 29) in letexte
    set dernier3cad to word (nb + 34) in letexte
    set ouverture3cad to word (nb + 35) in letexte
    set plushaut3cad to word (nb + 36) in letexte
    set plusbas3cad to word (nb + 37) in letexte
end tell

tell application "Safari"
    open location "https://fr.investing.com/currencies/eur-aud-historical-data"
    delay 2
    set letexte to (the text of the front document)
end tell
tell application "Finder"
    set lesmots to words of letexte
    repeat with i from 1 to count of lesmots
        if item i of lesmots is "Dernier" then set nb to i
    end repeat
    set dernieraud to word (nb + 10) in letexte
    set ouvertureaud to word (nb + 11) in letexte
    set plushautaud to word (nb + 12) in letexte
    set plusbasaud to word (nb + 13) in letexte
    set dernier1aud to word (nb + 18) in letexte
    set ouverture1aud to word (nb + 19) in letexte
    set plushaut1aud to word (nb + 20) in letexte
    set plusbas1aud to word (nb + 21) in letexte
    set dernier2aud to word (nb + 26) in letexte
    set ouverture2aud to word (nb + 27) in letexte
    set plushaut2aud to word (nb + 28) in letexte
    set plusbas2aud to word (nb + 29) in letexte
    set dernier3aud to word (nb + 34) in letexte
    set ouverture3aud to word (nb + 35) in letexte
    set plushaut3aud to word (nb + 36) in letexte
    set plusbas3aud to word (nb + 37) in letexte
end tell

tell application "Numbers"
    activate
    open "/Users/Ben/Desktop/Donnees & graphiques.numbers"
    --tell table 1 of sheet "FEUILLE DONNEES" of document "DONNEES & GRAPHIQUES"
    tell table 1 of sheet 1 of front document
        set the value of cell "b3" to dernierusd
        set the value of cell "c3" to ouvertureusd
        set the value of cell "d3" to plushautusd
        set the value of cell "e3" to plusbasusd
        set the value of cell "f3" to dernier1usd
        set the value of cell "g3" to ouverture1usd
        set the value of cell "h3" to plushaut1usd
        set the value of cell "i3" to plusbas1usd
        set the value of cell "j3" to dernier2usd
        set the value of cell "k3" to ouverture2usd
        set the value of cell "l3" to plushaut2usd
        set the value of cell "m3" to plusbas2usd
        set the value of cell "n3" to dernier3usd
        set the value of cell "o3" to ouverture3usd
        set the value of cell "p3" to plushaut3usd
        set the value of cell "q3" to plusbas3usd
        set the value of cell "b4" to derniercad
        set the value of cell "c4" to ouverturecad
        set the value of cell "d4" to plushautcad
        set the value of cell "e4" to plusbascad
        set the value of cell "f4" to dernier1cad
        set the value of cell "g4" to ouverture1cad
        set the value of cell "h4" to plushaut1cad
        set the value of cell "i4" to plusbas1cad
        set the value of cell "j4" to dernier2cad
        set the value of cell "k4" to ouverture2cad
        set the value of cell "l4" to plushaut2cad
        set the value of cell "m4" to plusbas2cad
        set the value of cell "n4" to dernier3cad
        set the value of cell "o4" to ouverture3cad
        set the value of cell "p4" to plushaut3cad
        set the value of cell "q4" to plusbas3cad
        set the value of cell "b5" to dernieraud
        set the value of cell "c5" to ouvertureaud
        set the value of cell "d5" to plushautaud
        set the value of cell "e5" to plusbasaud
        set the value of cell "f5" to dernier1aud
        set the value of cell "g5" to ouverture1aud
        set the value of cell "h5" to plushaut1aud
        set the value of cell "i5" to plusbas1aud
        set the value of cell "j5" to dernier2aud
        set the value of cell "k5" to ouverture2aud
        set the value of cell "l5" to plushaut2aud
        set the value of cell "m5" to plusbas2aud
        set the value of cell "n5" to dernier3aud
        set the value of cell "o5" to ouverture3aud
        set the value of cell "p5" to plushaut3aud
        set the value of cell "q5" to plusbas3aud
    end tell
end tell
 

BenCD

Membre junior
1 Mai 2019
15
0
29
Bonsoir,
Je t'ai fais un script qui fais ça (pas optimisé, mais bon)
Il va te paraître long car j'ai mis des délais pour l'ouverture des pages web (4 sec pour l'ouverture de safari plus 2 sec par ouverture de page ) car chez moi ma connexion est très lente...
Dis moi si cela fonctionne !

Bloc de code:
tell application "Safari"
    open location "https://fr.investing.com/currencies/eur-usd-historical-data"
    delay 4
    set letexte to (the text of the front document)
end tell
tell application "Finder"
    set lesmots to words of letexte
    repeat with i from 1 to count of lesmots
        if item i of lesmots is "Dernier" then set nb to i
    end repeat
    set dernierusd to word (nb + 10) in letexte
    set ouvertureusd to word (nb + 11) in letexte
    set plushautusd to word (nb + 12) in letexte
    set plusbasusd to word (nb + 13) in letexte
    set dernier1usd to word (nb + 18) in letexte
    set ouverture1usd to word (nb + 19) in letexte
    set plushaut1usd to word (nb + 20) in letexte
    set plusbas1usd to word (nb + 21) in letexte
    set dernier2usd to word (nb + 26) in letexte
    set ouverture2usd to word (nb + 27) in letexte
    set plushaut2usd to word (nb + 28) in letexte
    set plusbas2usd to word (nb + 29) in letexte
    set dernier3usd to word (nb + 34) in letexte
    set ouverture3usd to word (nb + 35) in letexte
    set plushaut3usd to word (nb + 36) in letexte
    set plusbas3usd to word (nb + 37) in letexte
   
end tell

tell application "Safari"
    open location "https://fr.investing.com/currencies/eur-cad-historical-data"
    delay 2
    set letexte to (the text of the front document)
end tell
tell application "Finder"
    set lesmots to words of letexte
    repeat with i from 1 to count of lesmots
        if item i of lesmots is "Dernier" then set nb to i
    end repeat
    set derniercad to word (nb + 10) in letexte
    set ouverturecad to word (nb + 11) in letexte
    set plushautcad to word (nb + 12) in letexte
    set plusbascad to word (nb + 13) in letexte
    set dernier1cad to word (nb + 18) in letexte
    set ouverture1cad to word (nb + 19) in letexte
    set plushaut1cad to word (nb + 20) in letexte
    set plusbas1cad to word (nb + 21) in letexte
    set dernier2cad to word (nb + 26) in letexte
    set ouverture2cad to word (nb + 27) in letexte
    set plushaut2cad to word (nb + 28) in letexte
    set plusbas2cad to word (nb + 29) in letexte
    set dernier3cad to word (nb + 34) in letexte
    set ouverture3cad to word (nb + 35) in letexte
    set plushaut3cad to word (nb + 36) in letexte
    set plusbas3cad to word (nb + 37) in letexte
end tell

tell application "Safari"
    open location "https://fr.investing.com/currencies/eur-aud-historical-data"
    delay 2
    set letexte to (the text of the front document)
end tell
tell application "Finder"
    set lesmots to words of letexte
    repeat with i from 1 to count of lesmots
        if item i of lesmots is "Dernier" then set nb to i
    end repeat
    set dernieraud to word (nb + 10) in letexte
    set ouvertureaud to word (nb + 11) in letexte
    set plushautaud to word (nb + 12) in letexte
    set plusbasaud to word (nb + 13) in letexte
    set dernier1aud to word (nb + 18) in letexte
    set ouverture1aud to word (nb + 19) in letexte
    set plushaut1aud to word (nb + 20) in letexte
    set plusbas1aud to word (nb + 21) in letexte
    set dernier2aud to word (nb + 26) in letexte
    set ouverture2aud to word (nb + 27) in letexte
    set plushaut2aud to word (nb + 28) in letexte
    set plusbas2aud to word (nb + 29) in letexte
    set dernier3aud to word (nb + 34) in letexte
    set ouverture3aud to word (nb + 35) in letexte
    set plushaut3aud to word (nb + 36) in letexte
    set plusbas3aud to word (nb + 37) in letexte
end tell

tell application "Numbers"
    activate
    open "/Users/Ben/Desktop/Donnees & graphiques.numbers"
    --tell table 1 of sheet "FEUILLE DONNEES" of document "DONNEES & GRAPHIQUES"
    tell table 1 of sheet 1 of front document
        set the value of cell "b3" to dernierusd
        set the value of cell "c3" to ouvertureusd
        set the value of cell "d3" to plushautusd
        set the value of cell "e3" to plusbasusd
        set the value of cell "f3" to dernier1usd
        set the value of cell "g3" to ouverture1usd
        set the value of cell "h3" to plushaut1usd
        set the value of cell "i3" to plusbas1usd
        set the value of cell "j3" to dernier2usd
        set the value of cell "k3" to ouverture2usd
        set the value of cell "l3" to plushaut2usd
        set the value of cell "m3" to plusbas2usd
        set the value of cell "n3" to dernier3usd
        set the value of cell "o3" to ouverture3usd
        set the value of cell "p3" to plushaut3usd
        set the value of cell "q3" to plusbas3usd
        set the value of cell "b4" to derniercad
        set the value of cell "c4" to ouverturecad
        set the value of cell "d4" to plushautcad
        set the value of cell "e4" to plusbascad
        set the value of cell "f4" to dernier1cad
        set the value of cell "g4" to ouverture1cad
        set the value of cell "h4" to plushaut1cad
        set the value of cell "i4" to plusbas1cad
        set the value of cell "j4" to dernier2cad
        set the value of cell "k4" to ouverture2cad
        set the value of cell "l4" to plushaut2cad
        set the value of cell "m4" to plusbas2cad
        set the value of cell "n4" to dernier3cad
        set the value of cell "o4" to ouverture3cad
        set the value of cell "p4" to plushaut3cad
        set the value of cell "q4" to plusbas3cad
        set the value of cell "b5" to dernieraud
        set the value of cell "c5" to ouvertureaud
        set the value of cell "d5" to plushautaud
        set the value of cell "e5" to plusbasaud
        set the value of cell "f5" to dernier1aud
        set the value of cell "g5" to ouverture1aud
        set the value of cell "h5" to plushaut1aud
        set the value of cell "i5" to plusbas1aud
        set the value of cell "j5" to dernier2aud
        set the value of cell "k5" to ouverture2aud
        set the value of cell "l5" to plushaut2aud
        set the value of cell "m5" to plusbas2aud
        set the value of cell "n5" to dernier3aud
        set the value of cell "o5" to ouverture3aud
        set the value of cell "p5" to plushaut3aud
        set the value of cell "q5" to plusbas3aud
    end tell
end tell

Cher Zeltron,

Un immense merci... Vraiment! Ton code est parfait!

Je vais m'en imprégner, avancer dans mon idée, mais la, j'ai grace à toi fait un bond de géant,

Je me permettrai de revenir vers toi si jamais je tombe de nouveau sur un os!

Encore merci!!
 

zeltron54

Membre d’élite
29 Mars 2008
2 149
335
Lorraine
Si ça fonctionne alors content pour toi ...
 

BenCD

Membre junior
1 Mai 2019
15
0
29
Bonjour à tous,
Bonjour Zeltron!

J'ai une petite question, ton code à été d'une aide immense,

J'ai voulu faire quelques changements et de nouveau mon peu de connaissance devient un frein,

J'aimerai savoir s'il est possible de ne plus prendre les informations venant de la liste, mais d'un graphique,

https://fr.investing.com/currencies/eur-usd-chart (en 1h, (rectangle rouge))

Je n'arrive pas à trouver l'information dans le code source,

Capture d’écran 2021-01-16 à 15.49.51.png


J'ai l'impression qu'une difficulté s'ajoute car les "informations" (rectangle vert) changent en fonction du positionnement du curseur de la souris (flèche bleue).

Il y a t'il un moyen de récupérer les informations des 10 dernières chandelles par exemple ?

Merci d'avance,
 

zeltron54

Membre d’élite
29 Mars 2008
2 149
335
Lorraine
Le graphique est construit par le code source de la page à priori en javascript (que je ne connais pas).
Tu peux récupérer le code source de la page dans un fichier Textedit et l'explorer. Si tu trouves ce que tu veux récupérer dans cette page, alors tu pourras faire un scan du texte pour en extraire ce qui t'interresse.
Pour ma part, là je ne connais pas.
Ci-dessous le script qui te permet de récupérer le code source de cette page.

Bloc de code:
tell application "Safari"
    open location "https://fr.investing.com/currencies/eur-usd-chart??from=gyagbbb3"
    delay 4
    set letexte to (the source of the front document)
    tell application "TextEdit"
        activate
        make new document at the front
        set the text of the front document to letexte
    end tell
end tell