script pour recupérer les mots clés et sa position ds GG

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


xperienss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 227
Inscription: Sam Jan 01, 2005 15:55

script pour recupérer les mots clés et sa position ds GG

Message le Sam Juil 08, 2006 13:44

Salut à tous

Depuis le temps que je puise des infos sur WRI, je vais proposer un bout de script (à améliorer) qui me sert à
- récupérer les référants provenant de google,
- les stocker ds une base,
- les afficher en sortant les mots clés, la page de votre site visitée, la position de ma page ds GG et le nbre de resultats dans la page de GG en question.

le script :

Code: Tout sélectionner
<?


/*
BDD à créer :
CREATE TABLE `google` (
  `id` int(11) NOT NULL auto_increment,
  `date` date NOT NULL default '0000-00-00',
  `ref` varchar(255) default NULL,
  `page` varchar(255) default NULL,
  UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;


FOOTER DE VOS PAGES (à afficher dans le bas de vos pages) :
if (strpos(($_SERVER["HTTP_REFERER"]),"www.google.")){
   $page4 = $_SERVER['REQUEST_URI'];
   $ref4 = $_SERVER["HTTP_REFERER"];
   $date4=date("Y-m-d",time());
   mysql_query("INSERT INTO google (id,date,ref,page) VALUES ('', '$date4', '$ref4','$page4')");
}
*/


function cutLongWords($string,$length,$separation) {
         return preg_replace('/([^ ]{'.$length.'})/si','\1'.$separation,$string);
}
$dbic = @mysql_connect("localhost","LOGIN","PASSWORD");
@mysql_select_db("BASE");


if ($_GET['date'] == ""){ $date = date("Y-m-d"); }else{ $date = $_GET['date']; }

$a = 0;
$start = $_GET['start'];
if(!$start) {$start=0;}
if ($_GET['nbrsite'] == ""){ $nbrsite = "30"; }else{ $nbrsite = $_GET['nbrsite']; }
$resultat02=mysql_query("select count(*) from google WHERE date = '$date'");
$row = mysql_fetch_row($resultat02);
$nb_google = mysql_result($resultat02,"0","count(*)");
echo "<center><table><tr><td align='center'>";
if ($start == "0"){
   echo "pages : <b>1</b> ";
}else{
   echo "pages : <a href='". $_SERVER["PHP_SELF"] ."?date=".$date."&nbrsite=".$nbrsite."&start=0'>1</a> ";
}
for($index=1;($index*$nbrsite)<$row[0];$index++){
      $pg = $index+1;
   if(($index*$nbrsite)!=$start){
      echo " - <a href='". $_SERVER["PHP_SELF"] ."?date=".$date."&nbrsite=".$nbrsite."&start=".($index*$nbrsite)."'>".$pg."</a> ";
   }else{
      echo " - <b>".$pg."</b> ";
   }
}
echo " (<b>". $nb_google ."</b>)</td></tr></table><br />
<table cellpadding='3' cellspacing='0'>
  <tr>    
   <td align='center' width='50'>EXT</td>
   <td align='center' width='50'>POS</td>
   <td align='center' width='80'>RESULT</td>
   <td align='center' width='230'>MOTS CLES</td>
   <td align='center' width='350'>PAGE</td>
  </tr>";
 
$resultat = mysql_query("select * FROM google WHERE date = '$date' ORDER BY id DESC limit $start,$nbrsite");
while($ligne = mysql_fetch_array($resultat)){
   if(strpos(($ligne['ref']),"google.com")){ $moteur = ".COM"; }
   elseif(strpos(($ligne['ref']),"google.fr")){ $moteur = ".FR"; }
   elseif(strpos(($ligne['ref']),"google.ch")){ $moteur = ".CH"; }
   elseif(strpos(($ligne['ref']),"google.ca")){ $moteur = ".CA"; }
   elseif(strpos(($ligne['ref']),"google.be")){ $moteur = ".BE"; }
   elseif(strpos(($ligne['ref']),"google.nl")){ $moteur = ".NL"; }
   else { $moteur = "google"; }

   $searchList = array();
   $info = parse_url($ligne['ref']);
   $query = parse_str($info['query'], $keyword);
   if (!empty($keyword['q'])) array_push($searchList, str_replace("+", " ", $keyword['q']));// On essaye d'extraire les mots clés tapés et stockés dans la variable q
   $stats = array_count_values($searchList);// On groupe les Mots-clés identiques et on les compte
   array_multisort($stats, SORT_DESC);// On trie par ordre croissant la liste
   $tabKey = array_keys($stats);// On crée un tableau avec les clés du tableau correpondants aux mots clés
   $i = 0;// On affiche la liste des Mots-clés et leur nombre
   foreach($tabKey as $key){
      if ($i < 10) $i++;
      else break;
      //$motscles = htmlspecialchars(urldecode($key)) . " : " . $stats[$key]; //aec le nombre de mos clés tappés
      $motscles = htmlspecialchars(urldecode($key));
      $motscles = str_replace("\'", "'", $motscles);
      $motscles = str_replace("é", "é", $motscles);
      $motscles = str_replace("è", "è", $motscles);
      $motscles = str_replace("à–¨", "ô", $motscles);
      $motscles = str_replace("Ã", "à", $motscles);
      $motscles = str_replace("àª", "ê", $motscles);
      $motscles = str_replace("¨", "¨", $motscles);
      $motscles = str_replace("à´", "ô", $motscles);
      $motscles = str_replace("à§", "ç", $motscles);
      $motscles = stripslashes($motscles);
   }
   
   $u = "http://www.VOTRE SITE.com/*";
   if (!preg_match("!^http://!",$u)) $u = "http://$u";
   if (preg_match("!^http://[^/]+$!",$u)) $u .= '/';
   $u = str_replace( '.', '\.', $u );
   $u = str_replace( '*', '.*?', $u );
   $qe = urlencode($motscles);
   $f = 0;
   $found = false;
      for ($s=0; $s<=0; $s++){
         $ss = $s * 10;
         $html = file_get_contents("http://www.google.fr/search?as_q=$qe&num=100&hl=fr&btnG=Recherche+Google&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images");
         $html = preg_replace ("'<blockquote[^>]*?>.*?</blockquote>'si", "", $html);
         //total result
         $pos = strpos($html, "sur un total d'environ");
         $rest = substr($html, $pos+22, 35);
         $total_number = eregi_replace("[^0-9.-]", "", $rest);
         $total_number = number_format($total_number, 0, ',', ' ');
         foreach ( split('<br>',$html) as $serps ){
            if ( preg_match("!<a href=\"http://!",$serps) ){
               $f++;
               if ( preg_match("!<a href=\"$u\"!",$serps) ){
                  $found = true;
                  break 2;
               }
            }
         }
      }
   
   if ((strlen($ligne['page']) > 60)) { $page = stripcslashes(cutLongWords($ligne['page'], 60, " ")); }else{$page = $ligne['page'];}//on coupe les mots trop longs

   if($a % 2 ==0){
   echo "<tr>
   <td align='left'>".$moteur."</td>
   <td align='center'><strong>".$f."</strong></td>
   <td align='left'>".$total_number."</td>
   <td align='left'><a href='".$ligne['ref']."' target='_blank'>". $motscles ."</a></td>
   <td align='left'>".$page."</td>
   </tr>";
   }else{
   echo "<tr>
   <td align='left'>".$moteur."</td>
   <td align='center'><strong>".$f."</strong></td>
   <td align='left'>".$total_number."</td>
   <td align='left'><a href='".$ligne['ref']."' target='_blank'>". $motscles ."</a></td>
   <td align='left'>".$page."</td>
   </tr>";
   }
   $a++;
}
echo "</table>";
mysql_close($dbic); //on ferme tout
?>


Pour que ca marche :
- créer la base
- ajouter le bout de code sur vos pages (en bas de préférence)
- changer les paramètres de connexion
- changer l'url de votre site dnas le code (ligne100 environ)


Alors :
1- ce script reprend des bout de code puiser ici et là sur WRI et autres sites...
2- il n'y a pas de css alors ce n'est pas très beau
3- il y a beaucoup à faire pour l'améliorer;
4- l'affichage est lent et c'est normal car pour chaque mot clé le script va vérifier sur GG...

salut amical à Olivier que j'ai eu la chance de rencontrer lors de la formation du 6 juillet à Paris (formation de qualité que je vous conseille à tous)...

Xp

netsys
WRInaute accro
WRInaute accro
 
Messages: 1110
Inscription: Sam Juil 17, 2004 18:47

Message le Sam Juil 08, 2006 13:56

Ca serait mieux de le faire avec l'api pour éviter que GG se fache ;-)


xperienss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 227
Inscription: Sam Jan 01, 2005 15:55

Message le Sam Juil 08, 2006 14:19

c'est pour cela que je limite le nombre à 30 affichages par pages... :?


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Sam Juil 08, 2006 16:02

bonjour
Vous avez un exemple du résultat sous la main ??
cdt


xperienss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 227
Inscription: Sam Jan 01, 2005 15:55

Message le Sam Juil 08, 2006 16:14

http://www.compta-online.com/admin-google-clean.php

j'ai limité le nombre d'affichage à 5 par pages pour eviter de véxer GG


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Sam Juil 08, 2006 17:23

re bonjour
Merci pour l exemple :D

seo agent
Nouveau WRInaute
 
Messages: 33
Inscription: Mar Mai 23, 2006 16:53

Message le Lun Juil 10, 2006 8:49

Bonjour

Ce sont des informations qui me semblent intéressantes.
Mais j'aurais imaginé stocker dans les résultats dans les quelques heures qui suivent chaque visite:
- l'important c'est de voir à quelle position dans les SERP se trouvait la page au moment où l'utilisateur a fait la recherche; une fois que c'est collecté, le fait que la position change peut être intéressant, mais c'est une autre analyse.
En mémorisant les positions toutes les heures par exemple, cela permettrait de consulter toutes les données sans les mettre à jour à chaque fois, ni impacter le temps de chargement des pages du site si c'était fait à chaque fois.

Ensuite, je reprendrais plutôt l'URL de recherche effectivement utilisée par le visiteur, avec ses options telles que hl (host language) etc... car elles peuvent avoir un vrai impact sur le classement des réponses.
Il faudrait extraire les valeurs significatifves pour pouvoir filtrer/classer sur celles-ci.

Bonne continuation


MagicYoyo
WRInaute accro
WRInaute accro
 
Messages: 2549
Inscription: Lun Mai 24, 2004 15:33

Message le Lun Juil 10, 2006 10:40

Super initiative et bonnes remarques de seo agent ;)


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

  • Analyser le positionnement dans Google
    Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Google, pour certains mots-clés recherchés.
  • Analyser le positionnement dans Yahoo
    Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Yahoo, pour certains mots-clés recherchés.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités