Télécharger un fichier CSV sur Euronext

Eléphanteau du PHP | 15 Messages

10 janv. 2012, 12:54

Bonjour à tous,

Je cherche à afficher sur mon site les cours des matières premières agricoles (ça c'est pour le contexte :D).

J'ai vus que sur Euronext on pouvait télécharger un fichier CSV (données séparées par des ';'). Voici un exemple :
http://www.euronext.com/search/download ... ruments=17
Choisissez donc le format '.txt' et validez. Vous obtenez un fichier texte avec plein de données séparées par des points-virgules. ;)

Cependant j'ai plusieurs matières à récupérer et ici nous avons récupéré seulement le maïs.

Je souhaiterais donc faire script PHP qui récupère ces fichiers. Mais comment faire étant donné que l'upload du fichier se fait apparemment avec du javascript (si on regarde le code source de la page...) ?

Voici ce que j'ai essayé :

Code : Tout sélectionner

//Ici j'ai copié l'url plus haut $urlf = 'http://www.euronext.com/search/download/quicksearchdownloadpopup-1921-FR.html?comesFromQuoteSearch=true&matchpattern=bl%EF%BF%BD&resultsTitle=Actions&totalOfInstruments=1'; if(file_exists($urlf)) { header('Content-type: text/plain '); header('Content-Disposition: attachment; filename="le_nom_que_je_veux.txt"'); readfile($urlf); } else { echo 'Le fichier n\'existe pas'; }
Ca m'indique que le fichier n'existe pas. Pas étonnant le lien ne pointe pas sur le fichier mais sur le formulaire. Comment faire ?

Merci à vous !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 janv. 2012, 14:15

salut,

le mieux serait de voir avec les auteurs du site pour savoir s'ils ne fournissent pas directement une api pour cela :)

sinon faut bien regarder le script JS tu verra qu'ils ajoute des choses à l'url comme le format de ficher de date

l'url final est
search/download/quicksearchdownloadpopup.jcsv?cha=1921&entryType=name&lan=FR&matchpattern=ma%EF%BF%BD&quicksearchresults=actif&resultsTitle=Actions&totalOfInstruments=17&viewall=&format=ff&formatDate=

donc il faut que tu fournisse le format (en fonction du choix dans le formulaire soit "txt" ou "xls"
le format de date devrait être dd/MM/yy(fr) ou MM/dd/yy(us)

donc au final je dirais que ton url devrait être
http://www.euronext.com/search/download ... e=dd/MM/yy

(Ce qui est fonctionnel, par contre fait gaffe les 3 premières lignes ne sont pas forcément utile ^^).

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 15 Messages

10 janv. 2012, 14:31

Salut,

Merci beaucoup moogli.

Bon sauf que si dans mon code précédent je remplace pour la nouvelle et bonne url cela m'indique toujours que le fichier n'existe pas. J'ai l'impression que ce n'est pas la bonne méthode pour récupérer le fichier... Je me trompe ?

Cordialement,

ViPHP
ViPHP | 2577 Messages

10 janv. 2012, 15:48

A mon avis file_exists ne supporte pas le protocole http (comme les fonctions de la famille stat()).

(cf http://php.net/manual/fr/function.file-exists.php)

Eléphanteau du PHP | 15 Messages

10 janv. 2012, 15:56

En effet bien vu. ;)

Je vais donc formuler ma question de manière plus générale :

Comment télécharger un fichier sur le net dans un script PHP ? (c'est mieux comme ça non :D)

Merci à toi. ;)

ViPHP
ViPHP | 2577 Messages

10 janv. 2012, 16:31

A priori readfile() doit marcher si tu trouves l'url. Voir allow_url_fopen dans php.ini

Eléphanteau du PHP | 15 Messages

10 janv. 2012, 17:12

Merci à toi Mazarini. ;)

Voilà j'ai donc tester en appelant le readfile() directement mais j'ai quand même l'erreur classique : failed to open stream. :(
J'ai bien vérifié le fichier php.ini et allow_url_fopen est bien à "On".

J'ai vraiment du mal à voir d’où ça peut venir... #-o

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 janv. 2012, 17:18

ini_set

sinon voir les sockets.

A tu vu le 1er point de ma 1ère requêtes c'est quand même le plus simple :)

@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 2577 Messages

10 janv. 2012, 17:20

La première chose à faire est de mettre l'url dans un navigateur. Ensuite, tu pourras chercher à y accéder en PHP.

ViPHP
ViPHP | 2577 Messages

10 janv. 2012, 17:28

Je manque de temps pour tout regarder sur le site de la bourse, mais je ne pense pas qu'ils souhaitent diffuser ce genre d'info de manière automatique sauf contre paiement.
Je sais qu'ils diffusent les carnets d'ordres en automatique pour un montant conséquent sauf à accepter un décalage de 15 mn.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 janv. 2012, 17:29

La première chose à faire est de mettre l'url dans un navigateur. Ensuite, tu pourras chercher à y accéder en PHP.
ça j'ai fait c'est bon j'ai filé un bon exemple fonctionnel.

ceci dit je te rejoint sur le fait de la dispo de la chose, enfin après il se démerde :)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 15 Messages

10 janv. 2012, 18:10

J'avais vérifié l'url bien sûr. ;)

Je me doute aussi qu'il y a surement un service payant derrière tout ça... Vous m'avez aussi servis à confirmer ceci. ;)

J'ai aussi vu le premier point de ta réponse moogli. Mais pour l'instant j'ai un peu peur de devoir attendre des lustres pour communiquer avec une pareille société. :'(

Bref, pour l'instant je marque un brève pause la dessus car je ne suis pas sur de ce que veux le commercial. Donc je définis bien ça demain avec lui et je verrais exactement ce qu'il faut que je récupère. Ensuite on pourra revoir ça.

Merci à vous,

Eléphanteau du PHP | 15 Messages

12 janv. 2012, 13:34

Bon j'ai vu le commercial (pas facile le type... :@)

En tout cas mon problème est résolu comme il compte faire une négoce pour obtenir une url affichable en iframe sur mon site. Donc pas à se casser la tête pour récupérer les cours moi-même.

En tout cas merci.

En espérant que ça pourra aider d'éventuel navigateur de la toile à trouver leurs marques sur ce sujet. ;)