IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Extraction de données sur un site internet

IV L'application Php - architecture

1) fonctionnement de l'application

L'application va récolter les informations en deux temps.
  1) à partir d'une liste de films contenue dans un fichier texte, elle va interroger le moteur de recherche du site internet. A chaque nom de film correspondra une ou plusieurs propositions. Ces choix seront suggérés à l'utilisateur final. Ce dernier cochera le bouton radio correspondant au bon titre. La première suggestion sera précochée (statistiquement, ce sera presque toujours le bon choix).
Afin d'optimiser le temps de traitement de l'opérateur, les propositions seront affichées sur le navigateur au fur et à mesure (au lieu s'afficher toutes à la fin du chargement de la page). Cette même page proposera à l'utilisateur les trois formats d'exportation possibles : texte, XML et MySQL.

2) Ensuite, l'application appellera individuellement chaque fiche de film et récoltera les informations. Leur traitement dépendra du format d'exportation choisi : page html, flux XML, insertion dans la base MySQL.


2) architecture de l'application

L'application va s'articuler autour de deux fichiers : extraction1.php et extraction2.php qui vont respectivement exécuter les tâches 1) et 2) décrites dans le paragraphe précédent.
Ces fichiers utiliseront deux bibliothèques :

connect.php :
définition de l'environnement. Utilisation de cURL ou des sockets Php, connexion éventuelle à la base MySQL.
  <?php
  Define("CONNEXION","curl");
  //Define("CONNEXION","php");
  
  Define("MYSQL",true);
  //Define("MYSQL",false);
  
  if (MYSQL) {
    $host="localhost";
    $user="user_base";
    $pwd="user_password";
    $base="DVD";
    $mysql_link = mysql_connect($host,$user,$pwd);
    mysql_select_db($base);
  }
  ?>

lib.php :
regroupe les fonctions appelées dans extraction1.php et extraction2.php. Par exemple, la fonction get_html() va regrouper les deux possibilités de connexion (cURL ou socket) en fonction des constantes définies dans connect.php
  <?php
  function get_html($url, $parametres=array()) {
    if (CONNEXION=="curl") {
      $params='';
      if ($parametres['Referer']!="") $params.='-e '.$parametres['Referer'];
      if ($parametres['Proxy']!="") $params.='-x '.$parametres['Proxy'];
      if ($parametres['BrowserName']!="") $params.='-A "'.$parametres['BrowserName'].'"';
      return (`curl $params $url`);
    }
    else {
      if (strtoupper(substr($url,0,7))=="HTTP://") $url=substr($url,7);
      $p = strpos($url,"/");
      if ($p===FALSE) {
        $nom_domaine=$url;
        $get="/";
      }
      else {
        $nom_domaine=substr($url,0,$p);
        $get=substr($url,$p);
      }
      
      $errno=""; $errstr=""; $r="";
      $fp = fsockopen($nom_domaine, 80, &$errno, &$errstr, 15);
      if($fp) {
        socket_set_timeout($fp, 15);
        fputs($fp,"GET $get HTTP/1.1\r\n");
        fputs($fp,"Host: $nom_domaine\r\n");
        fputs($fp,"Connection: Close\r\n\r\n");
        $r="";
        while(!feof($fp)) {
          $r.=fgets($fp,1024);
        }
        fclose($fp);
        return($r);
      }
      return('');
    }
  }
  ?>