Mise à jour du site MétéoFrance, donc de Météo Mobile
Par Olivier Mengué le samedi 6 septembre 2008, 16:46 - Code - Lien permanent
Le site de MétéoFrance a été relooké. Pas pour le mieux étant donné que l'on retrouve beaucoup de problèmes du site précédent et d'autres en plus : le changement cosmétique est malheureusement bien suffisant et encore une fois mal réalisé :
- du Flash partout : les possesseurs d'iPhone (qui n'affiche pas le flash) seront à la fête ;
- l'activation des cookies est nécessaire pour passer la page d'accueil : inadmissible !
- ce cookie est défini par du code JavaScript sur la page d'accueil, donc JavaScript est nécessaire ;
- le code HTML est changé, mais toujours aussi bogué puisque ce n'est pas du XML valide (9 erreurs relevées sur le W3C Validator sur la page d'accueil) ;
- il y a toujours autant de pubs intrusives (popups...) ;
- les URLs sont toujours aussi abominables. Exemple : http://marine.meteofrance.com/marine/accueil?17865.path=marinecote
Cette réorganisation impacte ma passerelle de consultation des bulletins sur téléphone mobile, Météo Mobile, qui ne fonctionnait donc plus :
- l'URL des bulletins a changé. Exemple d'un bulletin côtier :
http://marine.meteofrance.com/marine/accueil?MARINE_PORTLET.path=marinecotebulletinCOTE_RAPH_MENT
; - il faut maintenant envoyer le cookie
IntersticielPerso=done
pour ne pas être redirigé vers la page d'accueil (voir le code source de la page d'accueil sans cookie) ; - il y a encore des problèmes de XML, différents de la version précédente, donc on ne peut toujours pas utiliser un analyseur XML pour extraire le texte du bulletin.
Voici comment j'ai testé le requêtage HTTP pour récupérer la page d'un bulletin :
C:\>curl -i --header "Cookie: IntersticielPerso=done" http://marine.meteofrance.com/marine/accueil?MARINE_PORTLET.path=marinecotebulletinCOTE_RAPH_MENT
J'ai adapté le code de récupération. L'ancien code était très simple, grâce à file_get_contents()
:
$url = 'http://www.meteofrance.com/FR/mer/bulCote.jsp?LIEUID=COTE_' . $lieu; $data = file_get_contents($url);
Pour passer le cookie, j'ai dû utiliser la libcurl ainsi :
$url = 'http://marine.meteofrance.com/marine/accueil?MARINE_PORTLET.path=marinecotebulletin/COTE_' . $lieu; $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // C'est ici qu'est la partie spéciale du site de MétéoFrance curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: IntersticielPerso=done")); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 4); // 4 secondes curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $page = curl_exec($ch); if (curl_errno($ch)) { // Faire quelque chose de curl_error($ch) $page = ''; } curl_close($ch);
Comme vous l'avez vu j'utilise pour l'instant les bulletins publiés sur le site web public. Mais je préfèrerais avoir un accès direct au bulletin texte brut. Je n'ai rien trouvé sur le site FTP de MétéoFrance. Alors, si vous connaissez l'URL d'une telle source, je suis intéressé.
Commentaires
Salut Olivier.
As tu tester les pages suivantes chez Météofrance :
www.meteo.fr/marine/naviw... ?
Il existe d'autres pages contenant uniquement les bulletins (sans la décoration HTML inutile du site de MF). Contacts moi pour plus d'info :) .
Jé.