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)
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.
$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éré comme un bot malicieux
curl_setopt($ch, CURLOPT_USERAGENT, 'http://www.google.com');
// On exécute notre requête et met le ré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ée un nouveau document DOMDocument
$page_cible = new DOMDocument();
// On y charge le contenu qu'on a récupéré avec cURL
$page_cible->strictErrorChecking = false;
@$page_cible->loadHTML($resultat);
//permet de rechercharger la page entiere
$preg = preg_replace('/[^a-zA-Zéàèûùîçêô]+/i', ' ', $resultat);
$pieces = explode(" ", $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 />";
}
?>