Requete HTTP, Lire le flot d'une page HTML dans un script php

Requete HTTP, Lire le flot d'une page HTML dans un script php - HTML/CSS - Programmation

Marsh Posté le 09-06-2004 à 14:35:24    

Voila mon probleme.  
Je dispose d'un serveur Apache et d'une base de données MySQL.  
Pour les versions je les ai pas en tête mais ca doit etre assez récent vu que j'utilise pas mal de module open source et qu'en générale c'est les nouvelles versions qui sont demandées.  
 
Mon problème c'est que j'ai plusieurs page web, que je dois parse à intervale régulier(c'est pas une contrainte si je dois exécuter un script toutes les semaines pour mettre a jour).  
Je voudrai donc faire un script php/javascript qui fait une collecte d'information sur ces pages et les mets dans des base de données pour les exploiter ensuite.  
 
Le seul soucis que j'ai c'est de trouver comment lire le source de la page HTML et de pouvoir le lire dans mon script php, ceci sur un nombre X de pages.  
 
Merci d'avance

Reply

Marsh Posté le 09-06-2004 à 14:35:24   

Reply

Marsh Posté le 09-06-2004 à 14:52:51    

Le html, c'est soit une grosse string si t'as pas de chance et alors tu te démerde avec expression régulières, recherche de sous-chaînes...
Ou alors t'as de la chance et c'est du XHTML, et la tu peux utiliser un parser XML pour te faciliter la vie.
 
Sinon, je vois pas bien où est la question...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-06-2004 à 15:28:43    

Oui désolé, j'ai vraiment pas été clair...
 
Le problème c'est que je n'arrive pas a trouver de bibliotheque de fonction/package en javascript/php me permettant de récupérer dans une variable php le source de la page web html que je veux lire.
 
j'espere avoir été plus clair.

Reply

Marsh Posté le 09-06-2004 à 15:43:25    

En PHP, va voir du coté de CURL si tu as la lib qui va bien :
http://fr2.php.net/manual/fr/ref.curl.php
 
Sinon, sans la lib il faut tout faire à la main ( en fait apprendre à parler HTTP ) avec les sockets :
http://fr2.php.net/manual/fr/function.fsockopen.php


Message édité par Mara's dad le 09-06-2004 à 15:44:34

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-06-2004 à 15:48:25    

Exemple avec les sockets :
 

Code :
  1. function getProvider($ip)
  2. {
  3. $Provider = "?";
  4. $command = "/perl/whois?searchtext=" . $ip . "&do_search=Do+Search";
  5. $fp = fsockopen( "www.ripe.net", 80, &$errno, &$errstr, 30);
  6. if($fp)
  7. {
  8.  // Recherche du Provider
  9.  fputs($fp,"GET $command HTTP/1.0\n\n" );
  10.  $buff = "";
  11.  while(!feof($fp))
  12.  {
  13.   $buff .= fgets($fp,128);
  14.  }
  15.  fclose($fp);
  16.  $p1 = strpos( $buff, "descr:" );
  17.  $p2 = strpos( $buff, "country:" );
  18.  $Descr = substr( $buff, $p1 + 14, $p2 - $p1 - 15 );
  19.  $Descr = str_replace( "\ndescr:        ", ", ", $Descr );
  20.  $buff = substr( $buff, $p2 + 14 );
  21.  $p2 = strpos( $buff, "\n" );
  22.  $Country = substr( $buff, 0, $p2 );
  23.  $Provider = $Descr . "\nCountry : " . $Country;
  24. }
  25. return( $Provider );
  26. }


 
Cette fonction prend une adresse IP en entrée.
Elle interroge la base whois de www.ripe.net et extrait quelques informations sur le propriétaire de l'adresse qu'elle retourne dans $Provier :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-06-2004 à 16:02:14    

Je te remercie,  
Ca me parait tout a fait etre ce que je recherche!

Reply

Marsh Posté le 09-06-2004 à 16:12:08    

Pour une simple requête GET tu peux faire ça :
 
à partir de PHP 4.3.0
<?php
$contenu = file_get_contents($URL);
?>
 
sinon
<?php
$contenu = implode('', file($URL));
?>
 
Cela suppose neanmoins que le paramètre allow_url_fopen dans php.ini soit sur on

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed