2013-11-12 5 views
1

Я искал этот сайт и искал много слов, но, к сожалению, не нашел реального ответа, поэтому, пожалуйста, простите меня, если это не имеет смысла.Check PageRank через XML

Я использую PHP для проверки ранга страницы заданного URL-адреса, но иногда он показывает ошибку из-за загруженного веб-сайта google (http://toolbarqueries.google.com). enter image description here

Есть ли способ проверить ранжирование страницы с помощью XML или даже PHP с лучшим решением, которое не вызывает никаких ошибок?

Пожалуйста, помогите!

ответ

1

Я искал и нашел отличное решение. Попробуйте это:

class GooglePageRankChecker { 

    // Track the instance 
    private static $instance; 

    // Constructor 
    function getRank($page) { 
    // Create the instance, if one isn't created yet 
    if(!isset(self::$instance)) { 
     self::$instance = new self(); 
    } 
    // Return the result 
    return self::$instance->check($page); 
    } 

    // Convert string to a number 
    function stringToNumber($string,$check,$magic) { 
    $int32 = 4294967296; // 2^32 
     $length = strlen($string); 
     for ($i = 0; $i < $length; $i++) { 
      $check *= $magic; 
      //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31), 
      // the result of converting to integer is undefined 
      // refer to http://www.php.net/manual/en/language.types.integer.php 
      if($check >= $int32) { 
       $check = ($check - $int32 * (int) ($check/$int32)); 
       //if the check less than -2^31 
       $check = ($check < -($int32/2)) ? ($check + $int32) : $check; 
      } 
      $check += ord($string{$i}); 
     } 
     return $check; 
    } 

    // Create a url hash 
    function createHash($string) { 
    $check1 = $this->stringToNumber($string, 0x1505, 0x21); 
     $check2 = $this->stringToNumber($string, 0, 0x1003F); 

    $factor = 4; 
    $halfFactor = $factor/2; 

     $check1 >>= $halfFactor; 
     $check1 = (($check1 >> $factor) & 0x3FFFFC0) | ($check1 & 0x3F); 
     $check1 = (($check1 >> $factor) & 0x3FFC00) | ($check1 & 0x3FF); 
     $check1 = (($check1 >> $factor) & 0x3C000) | ($check1 & 0x3FFF); 

     $calc1 = (((($check1 & 0x3C0) << $factor) | ($check1 & 0x3C)) << $halfFactor) | ($check2 & 0xF0F); 
     $calc2 = (((($check1 & 0xFFFFC000) << $factor) | ($check1 & 0x3C00)) << 0xA) | ($check2 & 0xF0F0000); 

     return ($calc1 | $calc2); 
    } 

    // Create checksum for hash 
    function checkHash($hashNumber) 
    { 
     $check = 0; 
    $flag = 0; 

    $hashString = sprintf('%u', $hashNumber) ; 
    $length = strlen($hashString); 

    for ($i = $length - 1; $i >= 0; $i --) { 
     $r = $hashString{$i}; 
     if(1 === ($flag % 2)) { 
     $r += $r; 
     $r = (int)($r/10) + ($r % 10); 
     } 
     $check += $r; 
     $flag ++; 
    } 

    $check %= 10; 
    if(0 !== $check) { 
     $check = 10 - $check; 
     if(1 === ($flag % 2)) { 
     if(1 === ($check % 2)) { 
      $check += 9; 
     } 
     $check >>= 1; 
     } 
    } 

    return '7'.$check.$hashString; 
    } 

    function check($page) { 

    // Open a socket to the toolbarqueries address, used by Google Toolbar 
    $socket = fsockopen("toolbarqueries.google.com", 80, $errno, $errstr, 30); 

    // If a connection can be established 
    if($socket) { 
     // Prep socket headers 
     $out = "GET /tbr?client=navclient-auto&ch=".$this->checkHash($this->createHash($page)). 
       "&features=Rank&q=info:".$page."&num=100&filter=0 HTTP/1.1\r\n"; 
     $out .= "Host: toolbarqueries.google.com\r\n"; 
     $out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)\r\n"; 
     $out .= "Connection: Close\r\n\r\n"; 

     // Write settings to the socket 
     fwrite($socket, $out); 

     // When a response is received... 
     $result = ""; 
     while(!feof($socket)) { 
     $data = fgets($socket, 128); 
     $pos = strpos($data, "Rank_"); 
     if($pos !== false){ 
      $pagerank = substr($data, $pos + 9); 
      $result += $pagerank; 
     } 
     } 
     // Close the connection 
     fclose($socket); 

     // Return the rank! 
     return $result; 
    } 
    } 
} 

Теперь, когда вы хотите проверить PR, используйте этот код $some_var = GooglePageRankChecker::getRank("http://khanqah-daruslam.com");

Заменить URL на ваш (или любой пользовательский URL)

+1

Спасибо Имран Омер, он отлично работает. – user2854563

+0

Очень приятное решение, Омер. Это меньше слабости по сравнению с другими классами, которые я нашел. – KeepMove

+0

Добро пожаловать в @StevenWorks. –

1

Try SEOstats: https://github.com/eyecatchup/SEOstats

SEOstats является мощным открытым исходным кодом PHP библиотека запросить кучу SEO соответствующих показателей, таких как анализ подробно Обратной, ключевых слов и трафика статистика, тенденции веб-сайт, страница полномочным органом, Google Pagerank, Alexa Trafficrank и многое другое.

+1

Спасибо, но я уже видел это и не хотите использовать тяжелую библиотеку. Я хочу легкий PHP или XML-код. Спасибо в любом случае! – user2854563

+0

попробуйте это: http://blogbl.com/google-pr-checker-script-to-check-pr-of-all-pages-within-website/ – kovach

+0

Спасибо, но это не то, что я ищу. – user2854563

-1

Try SEOstats: https://github.com/eyecatchup/SEOstats

Спасибо, но я уже видел это и не хочу использовать какую-либо тяжелую библиотеку. Я хочу легкий PHP или XML-код. Спасибо, в любом случае!

На самом деле вам не нужно использовать полную библиотеку. Метод PageRank Google SEOstats' использует автономный класс, который может быть использован следующим образом:

<?php 
    $url = 'http://somedomain.com/'; 
    $pr = new GTB_PageRank($url); 

    $rank = $pr->getPageRank(); 

    printf("The Google Pagerank of %s is %s.", $url, $rank); 

Хорошая вещь об этом классе, как мне кажется, является то, что он поддерживает все существующие алгоритмы PageRank хэширования (удивительный, Дженкинс, jenkins2 и IE) и имеет некоторые расширенные функции, такие как предлагаемая панель инструментов-TLD и многое другое.

Вы можете проверить его здесь:
https://github.com/eyecatchup/SEOstats/blob/master/SEOstats/Services/3rdparty/GTB_PageRank.php

+0

@ тот, кто просто отказался от этого ответа: вы должны сделать заявление о том, почему! Потому что, насколько я вижу, вы либо не поняли вопроса, либо неправильно прочитали мой ответ. В противном случае бессмысленно понижать мой ответ, но не одновременно отвечать на вопрос Ковача. Любое заявление? – eyecatchUp

Смежные вопросы