Recuperer une valeur sur une page

Eléphanteau du PHP | 14 Messages

08 juin 2010, 00:05

Je ne comprend pas la page est bien valide....
http://www.boursorama.com/tableaux/cour ... CHE=1rPCAC

Le problème c'est qu'il n'y a pas beaucoup de valeur (CAC40, ...)

ViPHP
ViPHP | 5462 Messages

08 juin 2010, 00:08

Je ne comprend pas la page est bien valide....
http://www.boursorama.com/tableaux/cour ... CHE=1rPCAC

Le problème c'est qu'il n'y a pas beaucoup de valeur (CAC40, ...)

et non

http://validator.w3.org/check?uri=http% ... ne&group=0

Eléphanteau du PHP | 14 Messages

08 juin 2010, 00:15

ok, j'ai donc utilisé "libxml_use_internal_errors(true);" :

Code : Tout sélectionner

libxml_use_internal_errors(true); $html = "http://www.boursorama.com/tableaux/cours_az.phtml?MARCHE=1rPCAC"; $dom = new DomDocument(); $dom->loadHTMLFile($html); $xpath = new DomXPath($dom); $item = $xpath->query('//a[text()="ACCOR"]/../../td[position()=3]/text()')->item(0); var_dump($item->nodeValue);
Et voici l'erreur :

Code : Tout sélectionner

Notice: Trying to get property of non-object in NULL
Ou est le problème?

ViPHP
ViPHP | 5462 Messages

08 juin 2010, 00:18

la requete xpath n'est pas bonne, puisque les données ne sont pas ce que tu avais mis au debut (et que la page n'est pas valide) :wink:

fais
libxml_use_internal_errors(true);
      
$dom = new DomDocument();
$dom->loadHTMLFile('http://www.boursorama.com/tableaux/cours_az.phtml?MARCHE=1rPCAC');
    
$xpath = new DomXPath($dom);
$item  = $xpath->query('//a[text()="ACCOR"]/../../td[position()=4]/text()')->item(0);
    
var_dump($item->nodeValue);

Eléphanteau du PHP | 14 Messages

08 juin 2010, 00:25

Peux tu m'expliquer le fonctionnement d'une requete "xpath" ?

J'ai essayer de la comprendre à travers le lien que tu m'as donné, également en faisant des tests mais j'ai du mal à comprendre la syntaxe??

Code : Tout sélectionner

$xpath->query('//a[text()="ACCOR"]/../../td[position()=3]/text()')->item(0);

ViPHP
ViPHP | 5462 Messages

08 juin 2010, 00:34

ouai :D
<tr onclick="document.location.href='/cours.phtml?symbole=1rPAC'" id="btable1275949971_row0"  class="L10">
<td align="center"><img src="http://img.boursorama.com/i/block/flechedown.gif" width="7px" height="9px" border="0" alt="" /></td>
<td class="gras"><a rel="rowlink" href="/cours.phtml?symbole=1rPAC">ACCOR</a></td>
<td align="center"><img src="http://img.boursorama.com/i/delay_R.gif" border="0" title="Données temps réel"></td>
<td align="right">38.875(c)</td>
<td class="gras" align="right"><span class="color2">-0.75%</span></td>

<td align="right">38.640(c)</td>
<td align="right">39.685(c)</td>
<td align="right">38.600(c)</td>
<td class="gras" align="center"><span class="color3">+1.63%</span></td>
<td align="right">751 813</td>
</tr>
//a : va chercher toutes les balises de type "a" (donc lien)
text() : c'est ne texte a l'interieur du noeud <div>coucou<div> /div/text() = coucou

//a[text()="ACCOR"] : ducoup ca chercher tout les lien qui comprend ACCOR dans le noeud

//a[text()="ACCOR"]/.. : va chercher le noeud parent donc ici le "td"

//a[text()="ACCOR"]/../.. : va chercher le noeud parent du "td" donc le "tr"

//a[text()="ACCOR"]/../../td : va chercher tout les "td" dans le "tr"

//a[text()="ACCOR"]/../../td[position()=4] : va chercher le "td" qui est a la 4eme position

//a[text()="ACCOR"]/../../td[position()=4]/text() : va chercher son texte


donc a l'envers : va chercher le texte dans le 4eme noeud du parent du parent du lien dont le texte est égale a "ACCOR" :mrgreen:

Eléphanteau du PHP | 14 Messages

08 juin 2010, 00:55

Cela fonctionne :D MERCI

Dernière petite question, j'aimerais extraire simplement le resultat et supprimer : string(9)

J'ai essayer avec :

Code : Tout sélectionner

substr($val, 11, 4);

ViPHP
ViPHP | 5462 Messages

08 juin 2010, 01:01

Cela fonctionne :D MERCI

Dernière petite question, j'aimerais extraire simplement le resultat et supprimer : string(9)

J'ai essayer avec :

Code : Tout sélectionner

substr($val, 11, 4);
echo $item->nodeValue;

Eléphanteau du PHP | 14 Messages

08 juin 2010, 01:23

Super merci beaucoup pour ton aide!!

:D :D

Eléphanteau du PHP | 14 Messages

08 juin 2010, 21:34

Bonsoir,

J'ai testé toute la journée cependant j'ai une dernière question :
Comment réactualiser la page en cas d'erreur ?
Voici l'erreur :

Code : Tout sélectionner

Notice: Trying to get property of non-object in
Je suppose qu'il y a un problème lors de la récupération du code source et donc je souhaite réactualiser, se qui n'est pas un problème sauf que je ne sais pas comment dire qu'il y a eu un echec lors de la copie...

Pouvez-vous m'aider ?

Merci