Extraire une information d'une page Web

Répondre
SamSoFar
le 27/01/2010 à 11:29
SamSoFar
Bonjour, je cherche à extraire le nom dans une page Youtube
Par exemple dans la fiche de MegaOnlyMusic (http://www.youtube.com/user/MegaOnlyMusic),
je veux extraire "SamSoFar" dans la balise input. Voici un extrait du code html de la page:

<div style="float:right;text-align:right;">
<div onclick="swap_with_input('first_name', true);" id="profile_temp_first_name" class="edit_value">&nbsp;SamSoFar</div>
<input onblur="swap_with_input('first_name');" type="text" name="first_name" id="profile_edit_first_name" value="SamSoFar" class="edit_text" style="display:none" onkeypress="if (event.keyCode==13) {this.blur();return false;}">
</div>
</div>

Je souhaiterais ensuite insérer l'information voulue (ici "SamSofar") dans une table SQL.

Avez-vous des idées?
Merci d'avance.
SSF
moogli
le 27/01/2010 à 12:27
moogli
salut,

utilise preg_match() avec un motif correct et une requete insert simple

pour l'expression régulière => expreg.com

@+
Il en faut peu pour être heureux !!!!!
LupusMic
le 28/01/2010 à 16:46
LupusMic
Il est aussi possible d'utiliser DOMDocument et XPathEvaluator. Cependant, si le champ est renseigné par du javascript, c'est mort.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
SamSoFar
le 18/02/2010 à 16:07
SamSoFar
slt!!
merci beaucoup pr avoir répondu, g essayer d'utiliser preg_mach()comme ceci :

<?php

$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, 'http://www.youtube.com/user/MegaOnlyMusic');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);


$chaine=file_get_contents('http://www.youtube.com/user/MegaOnlyMusic');

$listeDebut = array();
$listeDebut[0] = '<a href="http://www.youtube.com/user/';//chaine
$listeDebut[1] = 'id="profile_show_age">';//age
$listeDebut[2] = 'id="profile_show_hobbies">';//Centres d'interêts
$listeDebut[3] = 'id="profile_show_country">';//Pays


$listeFin = array();
$listeFin[0]='">';
$listeFin[1]='</div>';
$listeFin[2]='</div>';
$listeFin[3]='</div>';

$compte=array();
$compte[0]='chaine';
$compte[1]='age';
$compte[2]='centresinteret';
$compte[3]='pays';




$cpt=0;
for($i=0;$i <= 3;$i++)
{

preg_match( '`'.$listeDebut[$i].'([[:graph:] \',"]+)'.$listeFin[$i].'`isU', $chaine,$out );
echo '<br />';
$compte[$cpt]=$out[1];
echo $compte[$cpt];
$cpt++;
//Insertion dans la base de données...

}

?>

le problème qui se pose c'est que ce code m'affiche uniquement le contenu de compte[0], qui est 'MegaOnlyMusic'..
ce problème ne se pose pas lorsque j'affecte à $chaine une chaine de caractère copié du code source.le programme m'affiche la chaine, l'age, le pays et les centres d'interet...

merci d'avance :).
SSF
LA GLOBULE
le 19/02/2010 à 13:34
LA GLOBULE
Juste comme ca, quel est l'interet de récupérer 2 fois le contenu de la page distante ?

Faire du file_get_contents sur du distant, c'est pas génial, préfère la solution curl.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours