Script Alexa Traffic Rank in PHP

di  Antonio Coschignano, mercoledì 17 febbraio 2010
L' Alexa Rank o anche conosciuto come il Traffic Rank è un valore numerico che Alexa assegna ad ogni sito web ed indica la posizione del sito nella classifica mondiale in base al traffico generato. Questo valore si basa su aggregati di dati storici relativi al traffico di milioni di utenti che utilizzano l' Alexa Toolbar e di dati ottenuti da altre fonti, ed è una misura che viene combinata insieme alle pagine viste dagli utenti (REACH). A differenza del PageRank di Google che è riferito ad una singola pagina di un sito web, l'Alexa Rank invece è riferito ad un intero dominio ed ai suoi eventuali sottodomini. Ad esempio un sito web www.example.it ed un suo sottodominio demo.example.it presentano lo stesso traffic rank.

In quest'articolo vedremo una classe PHP che interagisce con i webservice di Alexa per visualizzare tutto una serie di informazioni (oltre al Traffic Rank) che il sistema di Alexa riesce a rilevare. In particolare:
  • la presenza del sito nella directory DMOZ, con il titolo, la descrizione e le diverse sottocategorie in cui il sito compare
  • il numero di backlink (secondo Alexa)
  • il mini grafico storico degli utlimi sei mesi:
  • la bar value di Alexa :
  • il grafico Traffic Rank Trend personalizzabile in dimensioni, colore ed intervallo di tempo:

Grafico Traffic Rank Trend

La classe SimpleAlexaRank

La classe SimpleAlexaRank effettua una richiesta GET ad un webservice di Alexa e consente l'accesso alla risposta XML semplicemnte attraverso metodi di classe. Per istanziare la classe si passa l'url del sito web nel costruttore:
$alexa = new SimpleAlexaRank("simplesoft.it");
if(!$alexa->load())
  echo "not ranked";
else
  echo $alexa->getTrafficRank();
Il metodo load() effettua la richiesta e carica le informazioni. Il metodo ritorna false se il sito non è classificato in Alexa. Questo succede nei casi in cui il sito o non esiste o è stato appena creato. Vediamo gli altri metodi:
Metodo Descrizione Esempio
getTrafficRank() Ritorna il Traffic Rank corrente
echo $example->getTrafficRank()
getResultDMOZ() Ritorna la descrizione, il titolo e le diverse sottocategorie dove il sito compare. Se il sito non è presente in DMOZ ritorna false Vedi esempio sotto
getAlexaBacklink() Ritorna il numero di backlink rilevati da Alexa
echo $example->getAlexaBacklink()
getDelta() Indica il trends del sito web rispetto al Traffic Rank precedente
echo $example->getDelta()
generateImgBar() La bar-value
echo "<img src='".$example->generateImgBar()."'>"
generateImgGraph() Un mini grafico degli ultimi sei mesi (120x18px)
echo "<img src='".$example->generateImgGraph()."'>"
generateGraph(
$w=400,
$h=220,
$color="ffffff",
$range=1)
Il grafico dettagliato dov'è possibile specificare l'intervallo di tempo, dimensione e colore
echo "<img src='";
echo $example->generateGraph(100,100,'cccccc',3);
echo "'>";
getXml() Ritorna l'intero albero XML dell'interrogazione
$result = $alexa->getXml();
echo htmlentities($result);
I metodi non coprono l'intero albero XML poichè alcune informazioni sono presenti solo per determinati siti che superano una certa soglia di traffico. Comunque è possibile tramite il metodo getXml() accedere a tutti le altre eventuali info.

Dati DMOZ

Per illustrare la funzione che ci fornisce informazioni riguardo alla presenza o meno del sito nella directory DMOZ vediamo un esempio utilizzando la classe con il sito yahoo.it che compare in diverse categorie della directory:
$alexa = new SimpleAlexaRank("yahoo.it");
$alexa->load();
$resultDmoz = $alexa->getResultDMOZ();
$resultDmoz è un array strutturato in questo modo:
Array (
    [DESC] => Personalized content and search options. Chatrooms, free e-mail, clubs, and pager.
    [CATS] => Array (
        [0] => Array
            ( [CAT] => Top/Computers/Internet/On_the_Web/Web_Portals
              [TITLE] => On the Web/Web Portals)
        [1] => Array (
              [CAT] => Top/Computers/Companies/Yahoo_Inc.
              [TITLE] => Companies/Yahoo Inc. )
      )

  )

Un caso d'uso

Adesso vediamo un esempio completo che visualizza in una piccola tabella i valori e i grafici che la classe ci fornisce. L' esempio è relativo al sito google.it:
<?php
$alexa = new SimpleAlexaRank("google.it");
$alexa->load();
?>
<style type="text/css">
    table.alexa {
        border-collapse:collapse;
    }
    table.alexa td {
        padding:3px;
        border:1px solid #DDD;
    }
</style>
<?php
echo "<table class='alexa'><tr><td>Traffic Rank</td><td>";
echo $alexa->getTrafficRank();
echo "</td></tr>";
echo "<tr><td>Variazione</td>";
echo "<td>".$alexa->getDelta()."</td></tr>";
echo "<tr><td>Backlinks</td>";
echo "<td>".$alexa->getAlexaBacklink()."</td></tr>";
echo "<tr><td>Barra</td>";
echo "<td><img src='".$alexa->generateImgBar()."'></td></tr>";
echo "<tr><td>Grafico</td>";
echo "<td><img src='".$alexa->generateImgGraph()."'></td></tr>";
echo '<tr><td colspan="2"><img src="'.$alexa->generateGraph(200,200,'fffffff',3).'"/>';
echo '</td></tr></table>';
?>
Ecco l'output dell'esempio:

Traffic Rank35
Variazione+0
Backlinks13697
Barra
Grafico

Scarica la libreria (ZIP)

Articoli correlati


2 Commenti per "Script Alexa Traffic Rank in PHP"

Autore: daniele

Complimenti Antonio :-) In questi giorni, appena avro' tempo , lo provo e ti faccio sapere !!

lunedì 22 febbraio 2010 ore 13:16

Autore: Ramakrishna

Hi, Really great site, I have come through yahoo froum and really i like it. I am going to bookmark this page and read all the atricles. At this movement i need a help from you, I have a website http://abaphr.com. where I want to include yahoo mails(webmails) and yahoo messenger. can you please help me out to achive my target.

sabato 20 marzo 2010 ore 12:25

Lascia un commento

Nome :
E-mail :
Commento :

Tutti i commenti inseriti devono essere approvati da un amministratore prima di essere visualizzati al pubblico. Si tratta di una misura preventiva contro spam e pubblicità e non è necessario reinviare il commento. Si prega di scrivere commenti in tema. Spam e messaggi promozionali non vengono approvati.