Parser une page web. [Résolu]

Signaler
Messages postés
14
Date d'inscription
jeudi 21 mars 2002
Statut
Membre
Dernière intervention
9 février 2005
-
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
-
hello, j'aimerai savoir comment faire pour parser une page de requete google afin de sortir le nombre de resultat.

DeZeQuE

6 réponses

Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Sinon, la version regexp:

<?php

$fp = @fopen ('http://www.google.ch/search?hl=fr&q=test&btnG=Rechercher&meta=', 'r');

if( !$fp )

die( 'Erreur lors de l\'ouverture de la page' );



$buffer = '';

while( !feof( $fp ) )

$buffer .= fgets( $fp, 4096 );



preg_match( "/sur un total d'environ[ ]\([[:digit:]']+)?/i", $buffer, $matches );



if( isset($matches[1]) && !empty( $matches[1] ) )

echo $matches[1];

else

die( 'Non trouvé' );

?>


@++



R@f


www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
C'est plus propre, je trouve mieux que des substr, strpos...



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!

Tu charge la page via un fopen, ensuite, tu étudie la page de google voir comment est exprimer le résultat.



Si tu aime pas les regexp:

Voici un exemple de la partie qui contient le nb de résultats:

sur un total d'environ <b>261&nbsp;000&nbsp;000</b>



Donc, je pense, que tu commence par faire un strpos sur ta chaine avec 'sur un total d'environ', ensuite tu fais un substr pour ne garder que: '<b>261&nbsp;000&nbsp;000</b>...'



Tu recherche la position du et tu fais un substr, il te reste donc:

<b>261&nbsp;000&nbsp;000</b>



Pis ensuite, tu y es...



Si tu aime les regexp, tu peux en faire une belle, ca sera moins du bricolage, mais le résultat sera le même...



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
14
Date d'inscription
jeudi 21 mars 2002
Statut
Membre
Dernière intervention
9 février 2005

voila ce ke ja'i fais :
<?
$handle = fopen ("http://www.google.ch/search?hl=fr&q=dezeque.com%2C&meta=", "r");
$tot = strpos ($handle,"environ");
$rest = substr($tot, 11,3);
echo $rest;
?>

et bien sur ca ne marche..pas, peux tu m'aider ? enfaite ma page n'affiche rien. pas d'erreur mais rien.

merci d'avance...

DeZeQuE
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!

Voici un tit exemple:



<?php

$fp = @fopen ('http://www.google.ch/search?hl=fr&q=test&btnG=Rechercher&meta=', 'r');

if( !$fp )

die( 'Erreur lors de l\'ouverture de la page' );



$buffer = '';

while( !feof( $fp ) )

$buffer .= fgets( $fp, 4096 );



$pos = strpos( $buffer, 'sur un total d\'environ' );

if( $pos === false )

die( 'Chaine non-trouvée' );



$pos2 = strpos( $buffer, '', $pos );

if( $pos2 === false )

die( 'Chaine non-trouvée' );



$buffer = str_replace('', '', substr( $buffer, $pos + 22, $pos2 - $pos - 22) );



echo $buffer;

?>



@++



R@f



P.S. Tu avais oublié de lire la page avec fgets après le fopen...

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
14
Date d'inscription
jeudi 21 mars 2002
Statut
Membre
Dernière intervention
9 février 2005

merci bcp ca marche !!! je suis vraiment un debutant... lol

dis moi que entend tu par regexp ? c mieux ?

DeZeQuE