Gráfico comparativo de Alexa page rank hecho en PHP

Hoy día Google Analytics se ha convertido en una herramienta muy importante para los desarrolladores y publicistas; sin embargo, hay momentos es que debemos utilizar otras herramientas para obtener los resultados que deseamos. Por ejemplo, el ranking de varios sitios web comparando su ranking según Alexa.

Alexa brinda el servicio de monitoreo de ranking en tiempo real y provee algunas informaciones adicionales que google no comparte. Así, combinando los reportes de Google mas los reportes de Alexa, tendremos una combinación perfecta.

Cabe mencionar que el ranking en Alexa se basa en los resultados de los datos suministrados por quienes tiene la barra de herramientas o la barra de estado instaladas en su navegador. Aun así, es una muy buena fuente de datos.

En este pequeño tutorial vamos construir una reporte gráfico en PHP para comparar el ranking en Alexa de varios sitios.

Requerimientos

– Conocimientos de PHP 🙂
– Conocimientos de Clases en PHP (OOP)
– Que nuestro servidor web tenga la libreria GD para PHP
– Libchart – PHP chart library
– La fuente de Datos XML de Alexa.com
– Una Coca-cola bien fría 😉

Primero la función para leer los datos de alexa, ojo con la variable $remote_url, la cual contiene el url de los resultados de alexa en xml:

<?php

function alexaRank($domain){
$remote_url = 'http://data.alexa.com/data?cli=10&dat=snbamz&url='.trim($domain);
$search_for = '<POPULARITY URL';
if ($handle = @fopen($remote_url, "r")) {
while (!feof($handle)) {
$part = fread($handle, 100);
$pos = strpos($part, $search_for);
if ($pos === false)
continue;
else
break;
}
$part .= fread($handle, 100);
fclose($handle);
}
$str = explode($search_for, $part);
$str = array_shift(explode('"/>', $str[1]));
$str = explode('TEXT="', $str);

return $str[1];
}

?>

Luego con la libreria PHP Libchart creamos nuestro objeto:

<?php

include "libchart/classes/libchart.php";

header("Content-type: image/png");

$chart = new VerticalBarChart();

$serie1 = new XYDataSet();
$serie1->addPoint(new Point("PHP.NET", alexaRank("php.net") ));
$serie1->addPoint(new Point("GIZMODO.COM", alexaRank("gizmodo.com") ));
$serie1->addPoint(new Point("TWITPIC.COM", alexaRank("twitpic.com") ));
$serie1->addPoint(new Point("JQUERY.COM", alexaRank("jquery.com") ));

$dataSet = new XYSeriesDataSet();
$dataSet->addSerie("Page Rank", $serie1);
$chart->setDataSet($dataSet);

$chart->setTitle("Alexa Page Rank");
$chart->getPlot()->setGraphCaptionRatio(0.75);
$chart->render();

?>

Ahora ponemos todo junto dentro de un archivo, llamemosle “rank.php”

<?php

function alexaRank($domain){
$remote_url = 'http://data.alexa.com/data?cli=10&dat=snbamz&url='.trim($domain);
$search_for = '<POPULARITY URL';
if ($handle = @fopen($remote_url, "r")) {
while (!feof($handle)) {
$part = fread($handle, 100);
$pos = strpos($part, $search_for);
if ($pos === false)
continue;
else
break;
}
$part .= fread($handle, 100);
fclose($handle);
}
$str = explode($search_for, $part);
$str = array_shift(explode('"/>', $str[1]));
$str = explode('TEXT="', $str);

return $str[1];
}

include "libchart/classes/libchart.php";

header("Content-type: image/png");

$chart = new VerticalBarChart();

$serie1 = new XYDataSet();
$serie1->addPoint(new Point("PHP.NET", alexaRank("php.net") ));
$serie1->addPoint(new Point("GIZMODO.COM", alexaRank("gizmodo.com") ));
$serie1->addPoint(new Point("TWITPIC.COM", alexaRank("twitpic.com") ));
$serie1->addPoint(new Point("JQUERY.COM", alexaRank("jquery.com") ));

$dataSet = new XYSeriesDataSet();
$dataSet->addSerie("Page Rank", $serie1);
$chart->setDataSet($dataSet);

$chart->setTitle("Alexa Page Rank");
$chart->getPlot()->setGraphCaptionRatio(0.75);
$chart->render();

?>

Finalmente copiamos nuestro archivo a nuestro servidor web y lo consultamos con cualquier navegador web, http://localhost/rank.php , suponiendo que es la ruta del archivo. O la ruta en que se encuentra nuestro archivo y  veremos un interesantes gráfico de barras verticales con los ranking de Alexa de los sitios web indicados como el que acompaña a este artículo más arriba.

Podemos agregar cuantos sitios queramos ver en nuestro gráfico, solo agregando una serie nueva:

$serie1->addPoint(new Point("TITULO", alexaRank("URL") ));

Este gráfico es bastante bueno si queremos utilizar una herramienta sencilla manera monitorear el comportamiento de nuestros sites en Alexa.