PHP ile Alexa sırasını öğrenmek
İ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:
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:
$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.
çalışmıyor.