Recuperation de valeur html d'un autre site [Résolu]

Signaler
Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015
-
Messages postés
591
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
16 juillet 2009
-
bonsoir, j aimerais savoir si c'etait possible de recuperer des valeurs d'une source HTML d'un autre site.
je vous met a la suite le code source de la page ou j aimerais recuperer des valeurs: (les valeurs en rouges sont les donnees que j aimerais recuperer, et en vert les donnes que j aimerais recuperer mais pas tres importante)
<html>


<head>
<style>
<!--
a            {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 12px;
}
p            { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10 pt }
td            { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10 pt }
body,td,th {
 font-family: Verdana, Arial, Helvetica, sans-serif;
}
a:link {
 color: #3300FF;
}
a:visited {
 color: #3333FF;
}
a:hover {
 color: #000000;
}
-->
-->
</style>
</head>

<style type='text/css'>a {  color: #094098; line-height: normal; text-decoration: none; font-family: Verdana, Arial, Helvetica, sans-serif; letter-spacing: normal; cursor: hand}td { line-height: normal; text-decoration: none; font-family: Verdana, Arial, Helvetica, sans-serif; letter-spacing: normal; font-size: 10px;}a:hover      { color: #000000; background-color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; }P {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;}body {
 background-image: url(../Image/fond.gif);
}.p1 { font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; }.p_jaune { color: #FFFF00; font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; }</style>


<head>


<meta http-equiv="description" content="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.">


<meta http-equiv="keywords" content="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">


<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


<title> xxxxxxxxxxxxxxxxxxx</title>


</head>



<center><center>xxxxxxxxxxxxxxxx
</center>
</center>
<center>Posit. relative
,
Nom
,
Prénom
,
Classement officiel
,
Points
,
Catégorie
,

----

1
,
111111111
,
11111222222
,
   45
,
1460
,
V1
,

----

2
,
222222
,
222233333
,
   90
,
664
,
C2
,

----

3
,
333333
,
33334444
,
   45
,
1406
,
S
,

----

4
,
44444444
,
44445555
,
   70
,
936
,
S
,

----

5
,
55555555
,
55556666
,
   55
,
1201
,
S

</center>
<center> 1 / 1
</center>
<form method='POST' action='xxxxxx.php3'>
<center>Atteindre dans la liste,

----

<select name='list_Rech' size='1'><option  value='rechid%3DPos%26position%3D25%26reqid%3D211%26precision%3D10620077%26precision2%3D'>Position relative
<option  value='rechid%3DPag%26position%3D25%26reqid%3D211%26precision%3D10620077%26precision2%3D'>N° de page
<option  value='rechid%3D1%26position%3D25%26reqid%3D211%26precision%3D10620077%26precision2%3D'>Nom
<option  value='rechid%3D0%26position%3D25%26reqid%3D211%26precision%3D10620077%26precision2%3D'>N° de licence
</select>,
,

</center>
</form>
&nbsp;

  ----

    <small>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</small>,
 

</html>

je vous en remercie d'avancede votre aide , on m a parlé de parser , mais je ne comprends pas l utilité.

7 réponses

Messages postés
591
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
16 juillet 2009
2
Saell og blesuð

Voir les expressions régulières :-) http://www.expreg.com ou encore le langage perl

Vilhjálms
Sigurðsdóttir aka Frëyjá
Messages postés
96
Date d'inscription
mardi 9 janvier 2007
Statut
Membre
Dernière intervention
18 avril 2007

Bonsoir, tu peux avoir plusieurs possibilités pour ça :
- Soit une source RSS (XML) est disponible et là il suffit d'utiliser le parser XML de PHP
- Soit tu te fais ton propre parser HTML comme l'a dit vilhjalms (Saell og blesuð au passage) avec les expressions régulières (tu récupères le contenu de la page à l'aide d'un fsockopen() puis tu commences le parsing avec les expressions régulières). Mais dans une telle page, le parsing HTML ne va pas être de tout repos.

Cordialement,
Kdecherf
Messages postés
591
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
16 juillet 2009
2
Saell og blesuð

<?php
$handle=fopen('test.html','rb');
$contents='';
while(!feof($handle)){
    $contents.=fread($handle, 8192);
}
$con=$contents;
fclose($handle);
$contents=str_replace(array("\r\n",'</td>'),array('','|</td>'),$contents);
$contents=preg_replace('`<tr>(.+?)</td>`','<tr>',$contents);
$start_pos=strpos($contents,"</tr><tr>");
$end_pos=strpos($contents,"</table",$start_pos)-$start_pos;
$contents=substr($contents,$start_pos,$end_pos);
$contents=strip_selected_tags($contents,'<table><td>');
$contents=explode('<tr>',$contents);
for($i=1;$i<=count($contents)-1;$i++){
    $contents[$i]=explode('|',$contents[$i]);
    echo 'Nom : ',$contents[$i][0],'
';
    echo 'Prénom : ',$contents[$i][1],'
';
    echo 'Classement : ',$contents[$i][2],'
';
    echo 'Point : ',$contents[$i][3],'

';
}
//Source : http://fr.php.net/manual/fr/function.strip-tags.php function strip_selected_tags($str, $tags "", $stripContent false){
    preg_match_all("/<([^>]+)>/i",$tags,$allTags,PREG_PATTERN_ORDER);
    foreach ($allTags[1] as $tag){
        if ($stripContent) {
            $str = preg_replace("/<".$tag."[^>]*>.*<\/".$tag.">/iU","",$str);
        }
    $str = preg_replace("/<\/?".$tag."[^>]*>/iU","",$str);
    }
    return $str;
}
?>

Vilhjálms
Sigurðsdóttir aka Frëyjá
Messages postés
591
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
16 juillet 2009
2
Saell og blesuð

$con=$contents c'etait une autre version voici la dernière qui est plus propre dsl :

<?php
$handle=fopen('test.html','rb');
$contents='';
while(!feof($handle)){
    $contents.=fread($handle, 8192);
}
$con=$contents;
fclose($handle);
$contents=str_replace(array("\r\n",'</td>'),array('','|</td>'),$contents);
$start_pos=strpos($contents,"</tr><tr>")+5;
$end_pos=strpos($contents,"</tr></table>",$start_pos)-$start_pos;
$contents=substr($contents,$start_pos,$end_pos);
$contents=strip_selected_tags($contents,'<table><td>');
$contents=explode('</tr>',$contents);
for($i=0;$i<=count($contents)-1;$i++){
    $contents[$i]=explode('|',strip_selected_tags($contents[$i],'<tr>'));
    echo 'Position : ',$contents[$i][0],'
';
    echo 'Nom : ',$contents[$i][1],'
';
    echo 'Prénom : ',$contents[$i][2],'
';
    echo 'Classement : ',$contents[$i][3],'
';
    echo 'Point : ',$contents[$i][4],'
';
    echo 'Catégorie : ',$contents[$i][5],'

';
}
//Source : http://fr.php.net/manual/fr/function.strip-tags.phpfunction strip_selected_tags($str, $tags "", $stripContent false){
    preg_match_all("/<([^>]+)>/i",$tags,$allTags,PREG_PATTERN_ORDER);
    foreach ($allTags[1] as $tag){
        if ($stripContent) {
            $str = preg_replace("/<".$tag."[^>]*>.*<\/".$tag.">/iU","",$str);
        }
    $str = preg_replace("/<\/?".$tag."[^>]*>/iU","",$str);
    }
    return $str;
}
?>


Vilhjálms
Sigurðsdóttir aka Frëyjá
Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015

merci,
je viens de lire le site,mais je ne vois pas de tips pour reussir a recuperer une valeur sur un autre site web.

si il y a moyen , dirige moi s'il te plait.


a+
Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015

merci de vos reponses.
 je crois ,apres avoir vu les expressions regulieres,que je vais continuer mes copiers coller dans un fichier texte (beaucoup moins compliqué).
merci encore a toi vihljams et a toi aussi kdecherf.


 
Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015

super simpa,pour ce code, merci vihljams ,l expression $con=$content , c'est exactement ca lol.
mille merci fini les copiers coller .
j espere a une prochaine.