Auteur Sujet: Parser  (Lu 5352 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne stever

  • Débutant
  • *
  • Messages: 22
Parser
« le: 04 septembre 2006 à 13:57:25 »
Bonjour je viens de découvrir qu'il est possible de parse des pages internet

j'avoue que je suis perdu personne n'aurais un petit coup de pouce a me donner pour récupérer par exemple sur la page suivante :




les info suivantes :

Nom de la commune : Lisle-en-Rigault

Superficie : 1054 hectares

Altitude : 187 mètres

et les enregistrer dans un fichier
idem pour toutes les communes

sachant que je peux avoir la liste des communes (qui est la variable de la regete).
« Modifié: 05 septembre 2006 à 17:54:51 par stever »

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Re : Parser
« Réponse #1 le: 04 septembre 2006 à 14:26:36 »
Bonjour,

Je ne peux guère t'aider du fait que je ne connais pas le modul que tu utilises pour se faire.
Une simple précsion:
tu peux tout "parser" à partir du moment où le document cible est standardisé... cf discutions chaudes du moment :D.

Bonne continuation!
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/

Hors ligne stever

  • Débutant
  • *
  • Messages: 22
Re : Parser
« Réponse #2 le: 04 septembre 2006 à 14:30:12 »
Salut le modul que jutilise

pour le moment jutilise rien car je débute est ne je connais pas bien encore les principes ???

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Re : Parser
« Réponse #3 le: 04 septembre 2006 à 14:33:27 »
Je ne suis pas expert dans ce domaine :(.

Il doit y avoir de nombreux tutaux à ce sujet sur le Net.
Penche toi nottament sur le parsing XML... puisqu'une page dites HTML n'est ni plus ni moins qu'un format XML ^^. Si toutes fois cette dernière suit les recommandations.

Bon courage!
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/

Hors ligne stever

  • Débutant
  • *
  • Messages: 22
Re : Parser
« Réponse #4 le: 04 septembre 2006 à 14:58:49 »
Le theme parser n'est peut etre pas bon, on tous cas ce que je veux faire c'est enregistrée des info d'un site pour construire une base de donnée.

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Re : Parser
« Réponse #5 le: 04 septembre 2006 à 15:01:00 »
Sisisi, j'pense que tu es sur la bonne voix.

Le parsing permet de décomposer un document et d'en faire un ensemble d'éléments parent/enfant les uns des autres.
Donc ça répond à ta problématique.
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/

Hors ligne stever

  • Débutant
  • *
  • Messages: 22
Re : Parser
« Réponse #6 le: 04 septembre 2006 à 15:16:54 »
Si quelqu'un a un exemple de script PHP qui lui permet de recuperer des info ca m'aidreai bien

et je pourait l' adapter mon cas

Hors ligne Vincent59

  • Débutant
  • *
  • Messages: 10
Re : Parser
« Réponse #7 le: 04 septembre 2006 à 15:24:12 »
Une petite recherche sur Google donne des exemples (php html parser)

Par exemple : http://www.phpit.net/code/html-parser-class/

Dans ce que tu cherches (quid.fr), il faut ensuite regarder le code source de la page et trouver les informations intéressantes.
ici, les infos intéressantes sont dans

<table class="donneesprincipales">
 <tr>
               <td><h4>Nom de la commune</h4><strong>Lisle-en-Rigault</strong></td>
               <td><h4>Région</h4><a href="./regions.html?mode=detail&amp;reg=57" title="fiche de la région">Lorraine</a></td>
               <td><h4>Département</h4><a href="./departements.html?mode=detail&amp;dep=55&amp;style=fiche" title="fiche du département">Meuse</a> (55)</td>

               <td><h4>Code postal</h4><a href="./communes.html?mode=query&amp;req=55000&amp;style=fiche&amp;zoom=1" title="toutes les communes ayant ce code postal">55000</a></td>
            </tr>
         </table>


Il faut ensuite aller chercher sur chaque ligne les infos entre les balises h4 et strong...

C'est donc possible, il faut donc :
- trouver le bon outil
- analyser le code et essayer de décrire comment tu ferais "à la main"
- coder la récupération des données

Bon courage

Hors ligne stever

  • Débutant
  • *
  • Messages: 22
Re : Parser
« Réponse #8 le: 04 septembre 2006 à 16:25:13 »
Les info intéressantes a récupérer sont :

<table class="donneesprincipales">
 <tr>
               <td><h4>Nom de la commune</h4><strong>Lisle-en-Rigault</strong></td>
               <td><h4>Région</h4><a href="./regions.html?mode=detail&amp;reg=57" title="fiche de la région">Lorraine</a></td>
               <td><h4>Département</h4><a href="./departements.html?mode=detail&amp;dep=55&amp;style=fiche" title="fiche du département">Meuse</a> (55)</td>

               <td><h4>Code postal</h4><a href="./communes.html?mode=query&amp;req=55000&amp;style=fiche&amp;zoom=1" title="toutes les communes ayant ce code postal">55000</a></td>
            </tr>
         </table>



Il faut donc analyser avec un script : parser.php

<?php
class parser {

var 
$filename;

function 
parser($filename) {
  $this->filename=$filename;
}

function 
get_nom_commune() {
  $file=fopen($this->filename,"r");
    if (!$file) { echo "<p>Impossible d'ouvrir le fichier</p>.\n"; exit; } 
  $line=fgets($file,1024);
  while(!strstr($line,"Nom de la commune")) {
   $line=fgets($file,1024);
  }
  fclose($file);
  ereg("<br>(<strong>[alpha]-[alpha]</strong>)</b>",$line,$no);
  return $no[1];
}

}
?>


puis l'afficher page.php

<?php 
require "parser.php"
$parser=new parser("http://... "); 
?>


<html>
<head>
  <title>Nom commune</title>
</head>
<body>
  <center>
   <h1>Le nom est</h1>
   <h2><font color="blue"><?php echo $parser->get_nom_commune(); ?></font></h2>
   <h2>1er exemple</h2>

  </center>
</body>
</html>


Mais ca marche pas SOS
« Modifié: 05 septembre 2006 à 17:55:23 par stever »

Hors ligne stever

  • Débutant
  • *
  • Messages: 22
Re : Parser
« Réponse #9 le: 04 septembre 2006 à 18:46:06 »
Pour être plus clair je détaille ce qui ne marche pas

Sur la page externe a mon site (serveur)


je tente de trouver dans le code source (html) de la page la ligne qui contient le mot clef "Nom de la commune"

  $line=fgets($file,1024);
  while(!strstr($line,"Nom de la commune"))


en suite je tente de recupérer dans cette ligne les caractères contenus entre les balises <strong>

  ereg("<br>(<strong>[alpha]-[alpha]</strong>)</b>",$line,$no);

pour enfin afficher le nom de la commune grace a la variable $parser (sur mon site)

echo $parser->get_nom_commune();
« Modifié: 05 septembre 2006 à 17:55:43 par stever »

Hors ligne diaoul

  • Expert
  • ****
  • Messages: 663
    • http://diaoul.net
Re : Parser
« Réponse #10 le: 04 septembre 2006 à 22:16:56 »
c'est codé avec les pieds, mais ça le fait -_-
<?php
class parser {

var 
$filename;

function 
parser($filename) {
  $this->filename=$filename;
}

function 
get_nom_commune() {
  $file=fopen($this->filename,"r");
       if (!$file) { echo "<p>Impossible d'ouvrir le fichier</p>.\n"; exit; }
  while (!feof ($file)) {
     $line=fgetss($file);
    
   $nom
=substr(strstr($line,"Nom de la commune"),17);
   $super=substr(strstr($line,"Superficie"),10);
   $alti=substr(strstr($line,"Altitude"),8);
  echo $nom." "$super." "$alti;
  }
  fclose($file);
  }
}
?>

je te laisse retourner le résultat :wub:
« Modifié: 04 septembre 2006 à 22:20:03 par diaoul »

Hors ligne stever

  • Débutant
  • *
  • Messages: 22
Re : Parser
« Réponse #11 le: 05 septembre 2006 à 14:39:44 »
Le résultat est .......

Warning: Wrong parameter count for fgetss() in /parser.php on line 14

Hors ligne Vincent59

  • Débutant
  • *
  • Messages: 10
Re : Parser
« Réponse #12 le: 05 septembre 2006 à 15:15:58 »
Un petit coup d'oeil à la doc PHP en ligne sur la fonction fgetss http://fr.php.net/manual/en/function.fgetss.php

En PHP 4, il faut renseigner le deuxième paramètre avec la longueur de la ligne (1024 par exemple).

La fonction fgetss enlève les codes HTML (donc le strong, etc)

Hors ligne diaoul

  • Expert
  • ****
  • Messages: 663
    • http://diaoul.net
Re : Parser
« Réponse #13 le: 05 septembre 2006 à 17:07:46 »
exact, j'avais essayé de chez moi avec php5... :mellow:
« Modifié: 06 septembre 2006 à 00:58:46 par diaoul »

Hors ligne stever

  • Débutant
  • *
  • Messages: 22
Re : Parser
« Réponse #14 le: 05 septembre 2006 à 17:51:51 »
ok merci super ca marche super

petite question

comment faire pour enregistrer ces info dans un fichier ou une base de donnée

1°) faut il mieux enregistrer directement depuis le script dans une base de donnée ou faut il mieux au contraire enregistrer dans un fichier (cache ou plat) puis faire un upload.



2°) commenta faire pour les enregistrer dans la base de donnée

$sql="INSERT INTO commune (nom, superficie, altitude) VALUES (..........)";

que faut il mettre a la place des ............ car '$nom','$super' ça marche pas.



3°) et dans un fichier plat

car

   $txt_fichier =$nom.$super;
    $f=fopen($fichier,'w');
    fwrite($f,$txt_fichier);
    fclose($f);

ça marche pas
« Modifié: 05 septembre 2006 à 19:13:09 par stever »