recuperer donnees site externe pour mon site

dyp
Invité n'ayant pas de compte PHPfrance

03 oct. 2011, 13:13

bonjour,
je souhaite récupérer des données du site météo france et les afficher dans mon site.

site source : http://france.meteofrance.com/vigilance ... ONE=DEPT11
site destination : http://www.meteo-montrealmalepere11.fr/

je voudrais faire l'équivalent de ce site : lameteodu17.wifeo.com/index.php
qui affiche en haut au milieu un carré vert (pour l'instant) avec la vigilance météo [Charente Maritime (17) - Pas de vigilance particulière © Météo17 © Météo-France ]

j'ai un bout de script trouvé sur internet:
<?php
$fichier = 'http://france.meteofrance.com/vigilance ... ONE=DEPT11';
$texte = file_get_contents($fichier);
preg_match('#<tr>\s*<td class="tab-chiffre">(?<municipale>[^<]+)</td>#i', $texte, $population);
echo $population['municipale'];
?>
étant un gros navet des expressions régulières je ne trouve pas ma solution. en auriez-vous une (hors le fait d'acheter un logiciel qui lui le fait) ?

merci bien de vos réponses

ViPHP
xTG
ViPHP | 7331 Messages

03 oct. 2011, 13:51


dYp
Invité n'ayant pas de compte PHPfrance

03 oct. 2011, 19:39

merci de m'avoir mis au courant, je compte laisser les copyrights comme sur le site suivant.
http://www.meteo17angliers.fr/
le proprio du site ne veut pas partager son script et j'ai des difficultés.

ViPHP
xTG
ViPHP | 7331 Messages

03 oct. 2011, 20:34

En fait je pensais à cette partie :
Au titre de la présente licence, est exclusivement concédé:
un droit d'usage privé, individuel, personnel et non transmissible sur le contenu du site ou de l'un de ses éléments.
Et plus loin :
par le mécanisme des liens, sont interdites notamment la présentation d'une page de ce site dans un cadre n'appartenant pas à METEO-FRANCE et l'insertion d'une image appartenant à METEO-FRANCE dans une page ne lui appartenant pas.
l'extraction répétée et systématique d'éléments même non protégés du site causant un préjudice à METEO-FRANCE.
Ton météorologue amateur a soit une licence spéciale décernée par meteo-france, soit il déroge à cette licence et pourrait occasionner des poursuites. :)

En gros meteo-france interdit la récupération des informations qu'ils délivrent sur leur site pour un autre but que du visionnage personnel.

dYp
Invité n'ayant pas de compte PHPfrance

03 oct. 2011, 21:05

zt si c'était pour un bn site GPL open source gentil ? tu ferais comment ? :)

ViPHP
xTG
ViPHP | 7331 Messages

03 oct. 2011, 21:52

meteo-france ne diffuse pas ses contenus sous licence GPL, donc tu ne peux les réexploiter même en mettant ton projet en licence GPL.
Ton seul moyen est de leur demander une licence spéciale, qui sera à mon avis surement payante.

dYp
Invité n'ayant pas de compte PHPfrance

12 oct. 2011, 08:34

je reviens à la charge, j'ai demandé à MétéoFrance, nous avons autorisation de récupérer dans la page web de la carte vigilance.
du coup je cherche à récupérer l'info de couleur pour la retranscrire. elle est donnée ici :
<td class="texte12_bull" colspan="1" rowspan="1"><b><span style="background-color: rgb(40, 215, 97);">Département en vigilance verte.</span></b><br>
Pas de vigilance particulière.
</td>
il faut que je fasse un if sur la couleur pour afficher un cadre vert si vigilance verte etc..
une idée ?

ViPHP
xTG
ViPHP | 7331 Messages

12 oct. 2011, 09:27

Pour parser du HTML : DOMDocument ;)

dyp
Invité n'ayant pas de compte PHPfrance

18 oct. 2011, 16:57

bonjour à nouveau,
le DOMDoc me pose des problèmes. j'ai tenté ça sans résultat.
<?php
	function recup_couleur($url)
	{
		$source = file_get_contents($url);
		$resultat = preg_match('#>Département en vigilance (?<couleur>[^<]+)</span></b><br>#', $source, $couleur);
	}
	
	$couleur = recup_couleur('http://france.meteofrance.com/vigilance/Bulletin?ZONE=DEPT11');
	echo "D&eacute;partement en vigilance $couleur";
?>
des idées vous avez ?

Invité
Invité n'ayant pas de compte PHPfrance

18 oct. 2011, 17:29

petite info supplémentaire,
j'ai ça comme code HTML :
<!-- CADRE INFO VIGILANCE --><table class="taille495" cellpadding="0" cellspacing="0"><tbody><tr><td class="texte12_bull" colspan="1" rowspan="1"><b><span style="background-color: rgb(40, 215, 97);">Département en vigilance verte.</span></b><br>
Pas de vigilance particulière.
</td></tr></tbody></table>
et je cherche à récupérer le contenu du td class text12_bull

merci pour l'aide.

dYp
Invité n'ayant pas de compte PHPfrance

18 oct. 2011, 17:37

j'ai aussi essayé ça :
<?php
$page = 'http://france.meteofrance.com/vigilance/Bulletin?ZONE=DEPT11';
$texte = file_get_contents($page);
preg_match('#<td class="texte12_bull" colspan="1" rowspan="1"><b>(?<couleur>[^<]+)</b><br>#', $texte, $vigilance);
echo $vigilance['couleur'];
?>

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

19 oct. 2011, 12:10

salut,

http://php.net/dom

dans ton cas directement http://www.php.net/manual/fr/class.domdocument.php
par exemple
<?php
$dom = new DOMDocument('1.0', 'iso-8859-1'); // bon faut voir l'encodage ^^
$dom->loadHTMLFile('le chemin du fichier html'); // voir si fonctionne avec une url
?>
après utilisationde xpath avec http://www.php.net/manual/fr/domxpath.query.php

te reste a regarder les exemples et formuler la requete xpath qui va bien.

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

dYp
Invité n'ayant pas de compte PHPfrance

19 oct. 2011, 15:34

voila mon essai avec dom... erreur.
<?php
$myhtml = file_get_contents ('http://france.meteofrance.com/vigilance/Bulletin?ZONE=DEPT11');
$doc = new DOMDocument();
$doc->loadHTMLfile($myhtml);
$tags = $doc->getElementsByTagName('span');
foreach ($tags as $tag) {
       echo $tag->getAttribute('href').' | '.$tag->nodeValue."\n";
}
?>

ViPHP
xTG
ViPHP | 7331 Messages

19 oct. 2011, 16:24

Moi aussi ce matin en tentant de me connecter j'ai eu une erreur...
Ah ? Si je dis pas laquelle c'était personne ne pourra m'aider ?

Bon beh puisque vous insistez ! Il me disait que mon identifiant ou mon mot de passe était incorrect !
Le bougre ! Comme si je ne connaissais pas mes informations de connexion. :D

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

19 oct. 2011, 16:54

déja t'a mal regardé la doc dans ton cas c'est loadHTML et pas loadHTMLlile

as tu regardé ce que $myhtml avait dans le ventre ?

essais et tu comprendra.

il va falloir être beaucoup plus ingénieux pour cela (socket je pense si l'on peux récupérer les cookies .....)

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