Utiliser CURL et PHP pour récupérer du texte sur un site distant

Pour récupérer le contenu d’une page distante en php j’ai utilisé la librairie CURL. Dans un précédent billet j’expliquais comment récupérer un élément de la page distante via son id ou le nom du tag. (Une div, un p ext…)

Dans ce billet, le script présenté vous permet de récupérer le contenu total de la page distante et vous affiche le nombre de fois qu’un mot est présent sur cette page.
Il est présenté de façon brute sans aucun css ce qui rend le code plus lisible. J’ai commenté certaine ligne, toutefois si vous avez des difficultés ou besoin de précisions vous pouvez me contacter.
(Consultez mon premier article pour récupérer un élement d’un page distante avec CURL)

curl recuperer des mots distants

Il est très certainement possible d’utiliser d’autres techniques. Celle-ci m’a apporté pleinement satisfaction et je continu de le développer en local afin de récupérer plus d’informations. Ce type de script devient utile dans le SEO et vous permet de connaître la fréquence de vos clefs sur vos pages.

L’outil est incontestablement encore à l’état de « prototype » mais peut donner des idées et une base pour débuter un projet. Vous avez ainsi la syntaxe à disposition pour le développer et le modifier.

Le code ci-dessous introduit les notions de regex (expression régulière), de tableau multi dimensionnel en algorithmique, de boucle for et while en algorithmique.

<?php
$urlz = strip_tags($_POST['compteur_cible']);//variable d'url à intialiser
// On initialise cURL
$ch = curl_init();
// On lui transmet la variable qui contient l'URL
curl_setopt($ch, CURLOPT_URL, $urlz);
// On lui demdande de nous retourner la page
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// On envoie un user-agent pour ne pas être consid&eacute;r&eacute; comme un bot malicieux
curl_setopt($ch, CURLOPT_USERAGENT, 'http://www.google.com');
// On ex&eacute;cute notre requête et met le r&eacute;sultat dans une variable
$resultat = curl_exec($ch);
if($errno = curl_error($ch)) {
    // echo "<p>".$errno."</p>";
}
// On ferme la connexion cURL
curl_close($ch);

// On cr&eacute;e un nouveau document DOMDocument
$page_cible = new DOMDocument();
// On y charge le contenu qu'on a r&eacute;cup&eacute;r&eacute; avec cURL
$page_cible->strictErrorChecking = false;
@$page_cible->loadHTML($resultat);
//permet de rechercharger la page entiere

$preg = preg_replace('/[^a-zA-Zéàèûùîçêô]+/i', '&nbsp;', $resultat);
$pieces = explode("&nbsp;", $preg);//je split tout le contenu de la page distante par la fin de balise
$nb_pieces = count($pieces);
echo "Le nombre de d'expressions apres le premier explode est de ".$nb_pieces."<BR /><BR />";

$array_data0 = array();
$i = 0;
    while($i<$nb_pieces){
    $array_data0[$i] = $pieces[$i];
    // echo $array_data0[$i]." <BR />";
    $i = $i +1;
    }
$final = array_count_values($array_data0);
?>
<table>
<?php
 $i = 0;
 $j = 0;
foreach($final as $key=>$value){
    $array_data1[$i] = array($value,$key);//influence la façon dont sera placé
     // echo $array_data1[$i][1]." ";//les colonnes pour le foreach et le arsort apres
     // echo $array_data1[$i][0]."<BR />";
     $i = $i +1;
     $j = $j +1;
}
arsort($array_data1);//classe mon tableau dans l'odre décroissant

foreach ($array_data1 as $key => $val) {
    echo $val[1]." = ". $val[0]."<BR />";
}
?>

Laisser un commentaire