13 Ağustos 2008 // {victory}
OyOyOyOyOy (0 oy) Bir saniye ... Bir saniye ...
Paylaş
Twitter
FriendFeed
Digg
Technorati
StumbleUpon

İnternet sitelerini popülerliklerine göre sıralayan Alexa, hemen hepimizin bir şekilde göz önünde bulundurduğu bir web servisi. Servis yalnızca Alexa Toolbar’ını (Firefox için Sparky) kuranlardan gelen verileri dikkate aldığı için sıkça eleştirilse de, alanında liderliğini sürdürüyor.

Alexa, hemen her web sitesine ait sıra, erişim, bağlantılı siteler ve erişim hızı bilgilerini sunuyor. Bu bilgileri ve site açıklaması, site sahibi gibi bazı ekstra bilgileri XML yoluyla alabiliyoruz.

Bir web sayfasına ait XML çıkışına ulaşmak için tek yapmanız gereken http://www.alexa.com/xml/dad?url=siteninismi adresine girmek.

Eğer bu bilgileri bir web sayfasında göstermek isterseniz, XML’i ayıklayacak bir script’e ihtiyaç duyabilirsiniz. Bunu yapmak çok zor olmasa da David Walsh’un hazırlamış olduğu Alexa sınıfı (class) işinizi kolaylaştırabilir.

Alexa sınıfı; rank, reach, linksin değerlerini verebilecek şekilde hazırlanmış. Biz bu listeye bir de hiz değerini ekledik. Hız değeri, saniye cinsinden geliyor ve Alexa’da yuvarlatılmış halde görüntüleniyor (5,188 yerine 5,2 gibi). Sınıftan gelen hız bilgisini yuvarlayarak Alexa’daki gibi görünmesini sağlayabilirsiniz.

Alexa sınıfı PHP 4 ve PHP 5 için ayrı ayrı hazırlanmış. İsterseniz kodları görelim:

PHP 4:

<?

/* the alexa rank class */
class alexa
{
/* initial vars */
var $xml;
var $values;
var $alexa_address;

/* the constructor */
function alexa($alexa_address,$domain)
{
$this->alexa_address = $alexa_address;
$this->xml = $this->get_data($domain);
$this->set();
}

/* gets the xml data from Alexa */
function get_data($domain)
{
$url = $this->alexa_address.’http://’.$domain;
$xml = file_get_contents($url);
return $xml;
}

/* set values in the XML that we want */
function set()
{
$this->values['rank'] = (preg_match(‘/POPULARITY URL=”[a-z0-9\\-\\.\\/]{1,}” TEXT=”([0-9]{1,12})”/’,$this->xml,$regs) ? number_format($regs[1]) : 0);
$this->values['reach'] = (preg_match(‘/REACH RANK=”([0-9]{1,12})”/’,$this->xml,$regs) ? number_format($regs[1]) : 0);
$this->values['linksin'] = (preg_match(‘/LINKSIN NUM=”([0-9]{1,12})”/’,$this->xml,$regs) ? number_format($regs[1]) : 0);
$this->values['hiz'] = (preg_match(‘/SPEED TEXT=”([0-9]{1,12})”/’,$this->xml,$regs) ? number_format($regs[1]) : 0);
}

/* returns the requested value */
function get($value)
{
return (isset($this->values[$value]) ? $this->values[$value] : ‘”‘.$value.’” bulunamadı.’);
}
}

?>

PHP 5:

/* the alexa rank class */
class alexa
{
/* initial vars */
var $xml;
var $values;
var $alexa_address;

/* the constructor */
function alexa($alexa_address,$domain)
{
$this->alexa_address = $alexa_address;
$this->xml = $this->get_data($domain);
$this->set();
}

/* gets the xml data from Alexa */
function get_data($domain)
{
$url = $this->alexa_address.’http://’.$domain;
$xml = simplexml_load_file($url) or die(‘Cannot retrieve feed’);
return $xml;
}

/* set values in the XML that we want */
function set()
{
$this->values['rank'] = ($this->xml->SD->POPULARITY['TEXT'] ? number_format($this->xml->SD->POPULARITY['TEXT']) : 0);
$this->values['reach'] = ($this->xml->SD->REACH['RANK'] ? number_format($this->xml->SD->REACH['RANK']) : 0);
$this->values['linksin'] = ($this->xml->SD->LINKSIN['NUM'] ? number_format($this->xml->SD->LINKSIN['NUM']) : 0);
$this->values['hiz'] = ($this->xml->SD->SPEED['TEXT'] ? number_format($this->xml->SD->SPEED['TEXT']) : 0);
}

/* returns the requested value */
function get($value)
{
return (isset($this->values[$value]) ? $this->values[$value] : ‘”‘.$value.’” bulunamadı.’);
}
}

Sınıf bu şekilde. Bundan sonra aşağıdaki gibi istediğiniz verileri alabilirsiniz:

$domain = “opereysin.com”;
$alexa_connector = new alexa(‘http://alexa.com/xml/dad?url=’,$domain);
echo $domain.’\'un Alexa sırası: ‘.$alexa_connector->get(‘rank’) .”<br/>”;
echo $domain.’\'un Alexa\’ya göre bağlantılı olduğu site sayısı: ‘.$alexa_connector->get(‘linksin’) .”<br/>”;
echo $domain.’\'un Alexa\’ya göre erişim hızı: ‘.$alexa_connector->get(‘hiz’) .” saniye<br/>”;

Alexa sınıfını kullanırken, parantez içinde ilk olarak Alexa’nın yukarıda bahsettiğimiz XML çekme linkini, ikinci olarak da bilgilerini almak istediğimiz sitenin domain ismini yazıyoruz.

Sınıfın çalışan bir örneğini şuradan görebilirsiniz.

Etiketler: , , , , , , , ,
Bu yazı 13 Ağustos 2008 günü, saat 6:34 sıralarında victory tarafından yayınlandı. İlgili olduğu kategori: Dersler. Bu yazıya yapılacak yorumlardan haberdar olmak için RSS 2.0 beslemesini kullanabilirsiniz. Yorum yapabilirsiniz, veya kendi sitenizden geri izleme yapabilirsiniz.

Yorum yapın

Opereysin.com üyesiyseniz, yorumunuzun sahipsiz kalmaması için giriş yapabilirsiniz. Üye değilseniz, 1 dakikanızı ayırıp üye olabilirsiniz. Yorumlar, onaydan geçmeden yayınlanmazlar.

Türkçenin doğru kullanıldığı yorumları seviyoruz. (Nasıl yazmalıyım?)
Çesnili olacaksa: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> etiketlerini kullanabilirsiniz.

Yorum Ön İzleme > Göndermeden önce bi' bakın.
Kısayollar
2 sütun