Récuperer le PR d'une URL

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


OTP
Modérateur
Modérateur
 
Messages: 12943
Inscription: Ven Déc 16, 2005 22:41

Récuperer le PR d'une URL

Message le Dim Mar 18, 2007 20:52

Bonjour,

Comment peut-on récupérer le PR d'une URL, facilement ?
(Sans passer par les sites spécialisés qui s'offrent un BL à chaque affichage d'un PR).

Merci d'avance,

Michaël


Altenide
WRInaute impliqué
WRInaute impliqué
 
Messages: 433
Inscription: Mer Nov 26, 2003 17:37

Message le Dim Mar 18, 2007 20:53

euh au pif google toolbar ? :p


OTP
Modérateur
Modérateur
 
Messages: 12943
Inscription: Ven Déc 16, 2005 22:41

Message le Dim Mar 18, 2007 20:55

Altenide a écrit:euh au pif google toolbar ? :p


Je veux pas le faire à la main !
:(


Altenide
WRInaute impliqué
WRInaute impliqué
 
Messages: 433
Inscription: Mer Nov 26, 2003 17:37

Message le Dim Mar 18, 2007 21:01

-http://www.phpcs.com/codes/GOOGLE-PAGERANK-BACKLINKS_40649.aspx

bin va falloir un minimum quand même :p


OTP
Modérateur
Modérateur
 
Messages: 12943
Inscription: Ven Déc 16, 2005 22:41

Message le Dim Mar 18, 2007 21:10

Merci.
Pas tout simple, en effet !

NextGeneration
WRInaute impliqué
WRInaute impliqué
 
Messages: 425
Inscription: Mer Sep 27, 2006 18:34

Message le Dim Mar 18, 2007 22:12

l'annuaire mydir récupere le pr de chaque site inscrit. donc dans le code source, on doit trouver une function() qui permet cela. Je vais regarder cette semaine, pour trouver le bout qui t'intéresse


OTP
Modérateur
Modérateur
 
Messages: 12943
Inscription: Ven Déc 16, 2005 22:41

Message le Dim Mar 18, 2007 22:21

Merci d'avance.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12373
Inscription: Dim Aoû 08, 2004 20:24

Message le Dim Mar 18, 2007 22:23

NextGeneration a écrit:l'annuaire mydir récupere le pr de chaque site inscrit. donc dans le code source, on doit trouver une function() qui permet cela. Je vais regarder cette semaine, pour trouver le bout qui t'intéresse
j'ai regardé un peu, ça a l'air space quand même. C'est la seule partie à laquelle je n'ai pas touché. Sauf à enlever l'automatisation de la requête, qui n'est plus faite qu'à la demande maintenant.


Altenide
WRInaute impliqué
WRInaute impliqué
 
Messages: 433
Inscription: Mer Nov 26, 2003 17:37

Message le Dim Mar 18, 2007 22:50

j'ai regardé un peu, ça a l'air space quand même. C'est la seule partie à laquelle je n'ai pas touché. Sauf à enlever l'automatisation de la requête, qui n'est plus faite qu'à la demande maintenant.


tu as le bout de code sous la main ? merci :)


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12373
Inscription: Dim Aoû 08, 2004 20:24

Message le Dim Mar 18, 2007 23:07

je crois qu'il doit tout y avoir
Code: Tout sélectionner
// Calcul PR
define('GMAG', 0xE6359A60);

//unsigned shift right
function zeroFill($a, $b)
{
    $z = hexdec(80000000);
        if ($z & $a)
        {
            $a = ($a>>1);
            $a &= (~$z);
            $a |= 0x40000000;
            $a = ($a>>($b-1));
        }
        else
        {
            $a = ($a>>$b);
        }
        return $a;
}


function mix($a,$b,$c) {
  $a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
  $b -= $c; $b -= $a; $b ^= ($a<<8);
  $c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
  $a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
  $b -= $c; $b -= $a; $b ^= ($a<<16);
  $c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
  $a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
  $b -= $c; $b -= $a; $b ^= ($a<<10);
  $c -= $a; $c -= $b; $c ^= (zeroFill($b,15));
 
  return array($a,$b,$c);
}

function GCH($adress, $length=null, $init=GMAG) {
    if(is_null($length)) {
        $length = sizeof($adress);
    }
    $a = $b = 0x9E3779B9;
    $c = $init;
    $k = 0;
    $len = $length;
    while($len >= 12) {
        $a += ($adress[$k+0] +($adress[$k+1]<<8) +($adress[$k+2]<<16)
+($adress[$k+3]<<24));
        $b += ($adress[$k+4] +($adress[$k+5]<<8) +($adress[$k+6]<<16)
+($adress[$k+7]<<24));
        $c += ($adress[$k+8] +($adress[$k+9]<<8)
+($adress[$k+10]<<16)+($adress[$k+11]<<24));
        $mix = mix($a,$b,$c);
        $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
        $k += 12;
        $len -= 12;
    }

    $c += $length;
    switch($len)              /* all the case statements fall through */
    {
        case 11: $c+=($adress[$k+10]<<24);
        case 10: $c+=($adress[$k+9]<<16);
        case 9 : $c+=($adress[$k+8]<<8);
          /* the first byte of c is reserved for the length */
        case 8 : $b+=($adress[$k+7]<<24);
        case 7 : $b+=($adress[$k+6]<<16);
        case 6 : $b+=($adress[$k+5]<<8);
        case 5 : $b+=($adress[$k+4]);
        case 4 : $a+=($adress[$k+3]<<24);
        case 3 : $a+=($adress[$k+2]<<16);
        case 2 : $a+=($adress[$k+1]<<8);
        case 1 : $a+=($adress[$k+0]);
         /* case 0: nothing left to add */
    }
    $mix = mix($a,$b,$c);
    /*-------------------------------------------- report the result */
    return $mix[2];
}

//converts a string into an array of integers containing the numeric value of the char
function strord($string) {
    for($i=0;$i<strlen($string);$i++) {
        $result[$i] = ord($string{$i});
    }
    return $result;
}

function getPR($_url) {
  $adress = 'info:'.$_url;
  $ch = GCH(strord($adress));
  $adress='info:'.urlencode($_url);
  $pr =@file("http://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=$adress");
  $pr_str = @implode("", $pr);
  return substr($pr_str,strrpos($pr_str, ":")+1);
}


Altenide
WRInaute impliqué
WRInaute impliqué
 
Messages: 433
Inscription: Mer Nov 26, 2003 17:37

Message le Dim Mar 18, 2007 23:47

merci bcp Leonick
je vois pas ce que tu trouve de bizarre dans le code... es tu sur de m'avoir tout donné ? dans tous les cas je vais comparé cette version avec quelques autres que j'ai déja.

Pour voir, sans se casser la tete, pour chaque page, le PR il existe un petit soft téléchargeable à -http://www.webkeysoft.com/keyword_crawler.php
(il faut cocher l'option PR) j'ai fait quelques test çà semble correct.

Par contre la source que j'ai donné plus haut, je ne sais pas pourquoi ne donne rien. Je vais un petit peu me prendre la tête sur ce truc.


Altenide
WRInaute impliqué
WRInaute impliqué
 
Messages: 433
Inscription: Mer Nov 26, 2003 17:37

Message le Lun Mar 19, 2007 2:59

Comment peut-on récupérer le PR d'une URL, facilement ?
(Sans passer par les sites spécialisés qui s'offrent un BL à chaque affichage d'un PR).


Bin le code de mydir c pas le top, doit manquer des trucs ou je sais pas. Me renvoi toujours des trucs aberrant, marche pas sur ovh ...

Par contre j'ai trouvé (php.source) et bricolé un tout petit peu le code ci-dessous. $url étant l'url à analyser (par défaut celle de la page active). Ou bien tu l'envoi ds une table sql si tu veux faire des stats ou autres (la variable induite par getrank($url) )

Code: Tout sélectionner
<?php
// powered by anyone
//Definie la constante "GOOGLE_MAGIC"
define("GOOGLE_MAGIC", 0xE6359A60);


function zeroFill($a, $b) {
  $z = hexdec(80000000);
  if ($z & $a) {
    $a = ($a>>1);
    $a &= (~$z);
    $a |= 0x40000000;
    $a = ($a>>($b-1));
  }
  else {
    $a = ($a>>$b);
  }
  return $a;
}
//Cette fonction est utilisée pour le calcul du checksum de Google
function mix($a, $b, $c) {
  $a -= $b;
  $a -= $c;
  $a ^= (zeroFill($c,13));
  $b -= $c;
  $b -= $a;
  $b ^= ($a<<8);
  $c -= $a;
  $c -= $b;
  $c ^= (zeroFill($b,13));
  $a -= $b;
  $a -= $c;
  $a ^= (zeroFill($c,12));
  $b -= $c;
  $b -= $a;
  $b ^= ($a<<16);
  $c -= $a;
  $c -= $b;
  $c ^= (zeroFill($b,5));
  $a -= $b;
  $a -= $c;
  $a ^= (zeroFill($c,3));
  $b -= $c;
  $b -= $a;
  $b ^= ($a<<10);
  $c -= $a;
  $c -= $b;
  $c ^= (zeroFill($b,15));
  return array($a,$b,$c);
}

// Calcul le checksum de Google pour une URL donnée
function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
  if(is_null($length)) {
    $length = sizeof($url);
    }
  $a = $b = 0x9E3779B9;
  $c = $init;
  $k = 0;
  $len = $length;
  while($len >= 12) {
    $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
    $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
    $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
    $mix = mix($a,$b,$c);
    $a = $mix[0];
    $b = $mix[1];
    $c = $mix[2];
    $k += 12;
    $len -= 12;
  }
  $c += $length;
  switch($len)      /* Toute les cases retournent vraie */
    {
    case 11: $c+=($url[$k+10]<<24);
    case 10: $c+=($url[$k+9]<<16);
    case 9 : $c+=($url[$k+8]<<8);
      /* Le premier byte de c est réservé pour la longueur */
    case 8 : $b+=($url[$k+7]<<24);
    case 7 : $b+=($url[$k+6]<<16);
    case 6 : $b+=($url[$k+5]<<8);
    case 5 : $b+=($url[$k+4]);
    case 4 : $a+=($url[$k+3]<<24);
    case 3 : $a+=($url[$k+2]<<16);
    case 2 : $a+=($url[$k+1]<<8);
    case 1 : $a+=($url[$k+0]);
      /* case 0: rien à additionner */
  }
  $mix = mix($a,$b,$c);
  return $mix[2];
}
// Converti une chaine dans le tableau d'entiers
// contenant une valeur numérique de caractères
function strord($string) {
  for($i=0;$i<strlen($string);$i++) {
    $result[$i] = ord($string{$i});
  }
  return $result;
}


// Fonction utilisée pour obtenir la valeur du PageRank.
function getrank($url, $prefix="info:", $datacenter="www.google.com") {
//Si $prefix est "info:", alors la Toolbar pagerank sera retourné.
$url = $prefix.$url;
//Prend le checksum de Google pour $url utilisant la fonction GoogleCH.
$ch = GoogleCH(strord($url));
$file="http://$datacenter/search?client=navclient-auto";
$file.="&ch=6$ch&features=Rank&q=$url";
// si le rank n'existe pas renvoi n/A
  $oldlevel = error_reporting(0);
  $data = file($file);
  error_reporting($oldlevel);
  if(!$data || preg_match("/(.*)\.(.*)/i", $url)==0) return "N/A";
  $rankarray = explode (":", $data[2]);
  $rank = trim($rankarray[2]);
//Renvoie N/A si il n'y a pas de rank.
  if($rank=="") return "N/A";
  return $rank;
}

// on récupère l'url courante.

function url_actuelle()
{
     return  $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
}

$url = url_actuelle();

// Affiche le PageRank

echo $url." a pour PR : ".getrank($url);

?>


OTP
Modérateur
Modérateur
 
Messages: 12943
Inscription: Ven Déc 16, 2005 22:41

Message le Mar Mar 20, 2007 22:30

@Altenide : le PR affiché est "N/A".
J'ai foiré quelque chose ?

NextGeneration
WRInaute impliqué
WRInaute impliqué
 
Messages: 425
Inscription: Mer Sep 27, 2006 18:34

Message le Mar Mar 20, 2007 22:56

if(!$data || preg_match("/(.*)\.(.*)/i", $url)==0) return "N/A";

if($rank=="") return "N/A";

3 Raisons pour ce "N/A" :

- Page inexistante
- Url mal formée ( cf la regex )
- Pagerank non attribué

( cf code source )


Altenide
WRInaute impliqué
WRInaute impliqué
 
Messages: 433
Inscription: Mer Nov 26, 2003 17:37

Message le Mer Mar 21, 2007 7:42

tout a fait, si tes url sont trops complexes par exemple, mais as tu essayé keyword_crawler ?

Récuperer le PR d'une URL

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 :

  • Analyse des backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Recherche de citations d'un site en texte brut
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité