2009.10.27
Yoshi 開発

自作アクセス解析 Vol.3 [Google ページランク取得]

自作アクセス解析も今回で3回目になります。

なかなか出番が回って来ないので、前回にどこまで書いたのかを読み直さないといけなかったり、
後何ヵ月後に完結するのかもわかりませんが(笑

今回は、予定していたFlexでのグラフは除かせていただいて
ページランクについて書きたいと思います。

では早速

ページランクとは何か?(Wikipedia引用
ページランク(PageRank)は、World Wide Web上の文書や画像を検索する検索エンジンの一つであるグーグルが採用している、ウェブページの重要性を測るアルゴリズムである。

もっと詳しく知りたい場合はこちらから⇒https://ja.wikipedia.org/wiki/%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AF

簡単にいうとGoogleでしか使用されていませんが、0~10の11段階でページをランク付けしているといった感じでしょうか。
これは、SEO対策にはとても大事な事でページランクが高ければGoogleに重要なサイトだと思わせることができるということです。

そうなると、自分のサイトのページランクはどれぐらいなのか気になるところです。
ページランクを調べてくれるサイトは世の中に出回っていますので一度調べてみるとよいでしょう。
有名なところでは、
Google ツールバーを入れていると確認できる。
Google PageRank Checker – ページランクを調べる
PageRank On – ブログパーツ・グーグルページランク表示ツール
などがあります。

では、ページランクはどうしたら上げる事ができるでしょう。
一般的には 「ページランクの高いサイトの頁」かつ「リンク数が少ない頁」から、リンクされることといわれています。
ということは被リンクを増やすのが一番手っ取り早い方法といえるでしょう。

それはページランクに限ったことでは無く、SEOとして重要視されているものですので
どうしても検索順位を上げたいと思うと被リンクに頼らざるを得ません。
なので被リンクを増やすための有料サービスもたくさんあるわけですね。

とまぁ、被リンクについて、色々と話しましたが今回は自作アクセス解析の作成ですので
ページランクの取得を作成してみようと思います。

使用するソースは、下記のサイトから取得します。
PHP – Displaying Google Pagerank – Web Design & SEO Company

こちらで記述されている

<?php
define(‘GOOGLE_MAGIC’, 0xE6359A60);
class pageRank{
var $pr;
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 ^= ($this->zeroFill($c,13));
$b -= $c; $b -= $a; $b ^= ($a<<8);
$c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,13));
$a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,12));
$b -= $c; $b -= $a; $b ^= ($a<<16);
$c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,5));
$a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,3));
$b -= $c; $b -= $a; $b ^= ($a<<10);
$c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,15));
return array($a,$b,$c);
}

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 = $this->mix($a,$b,$c);
$a = $mix[0]; $b = $mix[1]; $c = $mix[2];
$k += 12;
$len -= 12;
}
$c += $length;
switch($len){
case 11: $c+=($url[$k+10]<<24);
case 10: $c+=($url[$k+9]<<16);
case 9 : $c+=($url[$k+8]<<8);
/* the first byte of c is reserved for the length */
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]);
}
$mix = $this->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 printrank($url){
$ch = $this-&gt;GoogleCH($this-&gt;strord(”info:” . $url));
$ch = sprintf(”6%u”,$ch);

$fp = fsockopen(“www.google.com“, 80, $errno, $errstr, 30);
if (!$fp) {
echo “$errstr ($errno)<br />\n”;
} else {
$out = “GET /search?client=navclient-auto&ch=” . $ch . “&features=Rank&q=info:” . $url . ” HTTP/1.1\r\n” ;
$out .= “Host: www.google.com\r\n ;
$out .= “Connection: Close\r\n\r\n” ;
fwrite($fp, $out);
while (!feof($fp)) {
$data = fgets($fp, 128);
$pos = strpos($data, “Rank_”);
if($pos === false){
}else{
$pagerank = substr($data, $pos + 9);
$this->pr = $pagerank;
}
}
fclose($fp);
}
}
//display pagerank. Create some images for the script. If you make your own make
function get_pr(){
return $this->pr;
}
}
?>

をpagerank.phpとして保存します。

それを、呼び出すページにてインクルードし使用します。

<?php
include(“pagerank.php”);
$gpr = new pageRank();
$gpr->printrank(“https://bitstar.jp/“);
echo $gpr->get_pr();
?>

$gpr->get_pr();での戻り値が、https://bitstar.jpとなっているURLに対してのページランク(0-10)になります。

これをうまく加工し、見せ方をそれっぽく見せたり、自由にカスタマイズできます。

<div style=”padding:5px; width:100px”>
PageRank : <span style=”font-size:17px;color:red;font-family:arial black”><?= $gpr->get_pr() ?></span>
</div>
<div style=”text-align:left; border:1px solid #afafaf; height:10px; width:100px”>

<div style=”width:<?=  ($gpr->get_pr())*10 ?>%; background-color:red; height:100%”></div>

</div>

PageRank : 3

といったところでしょうか。

今回は公開されたソースを使用していますので、特に何かを作ったりしたわけでは無いのですが(汗

次回は、ランキングの取得方法について記述したいと思いますが、


Google による明示的な事前の許可なくして Google のシステムに対していかなる自動クエリを送信することも禁止します。「自動クエリ」には、Web サイトがさまざまなクエリに対して Google のどの位置に「ランク付け」されるかを判定するために Google にクエリを送るソフトウェアの使用が含まれます。

とあるように自動クエリの送信は禁止されています。

ですので、自動では無く手動でのクエリ送信の方法を説明したいと思います(笑

では、また!

————————————————————-
補足:
上記公開ソースでは、取得できなドメインがある為

$ch = “6″.$this->GoogleCH($this->strord(”info:” . $url));

$ch = $this->GoogleCH($this->strord(”info:” . $url));
$ch = sprintf(”6%u”,$ch);
に変更。

get_pr()で取得するのがイメージタグになっていたので、数字だけの取得に変更。

Yoshi

一覧に戻る