Cómo hemos conectado eComGalicia con la API de Moz

  • Posted on: 19 April 2017
  • By: Sergio Camba CTO

API de MOZMi nombre es Sergio Camba y tengo el honor de formar parte del pedazo de grupo humano de eComGalicia como CTO. Hoy os voy a comentar así por encima, cómo funciona nuestro script de creación propia para la actualización automática del Domain Authority (DA) de nuestro listado de webs y cómo surgió la idea.

El problema de las actualizaciones del DA de MOZ

Xavi, me comentó como realizaba el ranking de tiendas online de EcomGalicia.com, en el que existe un listado bastante grande, algo más de 300 direcciones web y en la que él mismo y de forma totalmente manual, actualizaba regularmente el DA de cada una de ellas. Mis ojos se abrieron como platos, y mis cejas casi tocaban el techo del asombro. ¿Cómo alguien podía ir url por url, una a una, sacando un dato de la web de MOZ para actualizar un listado? Pero a la vez que me comentaba su método, me mostraba su solución: la API de MOZ.

La solución: Conexión con la API de MOZ

Para los que no sepáis de qué trata un API, lo podríamos resumir como "esa persona que todo lo sabe en el momento que le preguntas algo". No es como Google, que lo sabe absolutamente todo. La API solo "sabe de lo suyo", y en este caso, en datos que genera la plataforma de MOZ.

De manera más técnica, podríamos decir que es un software que actúa como servidor de peticiones, contestando a cada petición con datos de una determinada manera y siguiendo sus propias reglas.

Volviendo a la conversación con Xavi, me perfilaba de manera inequívoca el flujo de los datos: "te conectas a la API, consigues los DA y actualizas los campos de donde los mostramos". Correcto Xavi, o justo, bueno, eso es otro tema entre él y yo, conversaciones trascendentales de personas que piensan mucho mientras desarrollan su mente delante de un ordenador.

Entonces, de acuerdo, tenemos por un lado un "programita" que nos da ciertos datos, la API, pero... ¿qué hacemos con ellos? ¿cómo los conseguimos? ¿qué tenemos que utilizar? ¿dónde los guardamos?

En nuestro caso, EcomGalicia.com está desarrollada en Drupal. A decir verdad, apenas había trabajado con Drupal, hace algunos años tuve que instalar una versión quasi-beta y tan sólo sabía de ella que era un sistema de gestión de contenidos, que estaba hecha en PHP y que debía de usar una base de datos si o si.

Entonces, ya empezaba a atisbar cómo sería el flujo real del script:

 

API MOZ   <<<--->>>   PHP   <<<--->>>   DRUPAL

 

Exactamente! PHP sería el nexo entre nuestro origen (API) y nuestro destino (DRUPAL), lo que me hace recordar una de las máximas que campea en la informática en general: entrada-procesamiento-salida. Pero nuestro script es un poco más complejo ya que las peticiones son bidireccionales.

El flujo de datos

En un primer momento, recogemos las urls de la base de datos de Drupal. Para ello nos apoyamos en una pequeña librería artesanal, marca de la casa y tremendamente compatible con multitud de bases de datos. Me refiero a PDO, un método de conexión de base de datos mucho más versátil que su competidor mysqli.

Para invocar las llamadas a la base de datos hemos utilizado la tecnología AJAX para realizar las conexiones asíncronas y poder así controlar los eventos que van sucediendo.

Una vez tenemos las urls ordenaditas en su array, procedemos a recorrer una a una mediante las sentencias iterativas de programación. Por cada una de ellas, invocamos a nuestra otra librería de apoyo. Se trata de la librería de funciones para la API de MOZ, que apenas consta de una función customizada a la que se le pasa una URL y te devuelve el Domain Authority actual de ese dominio. Obviamente, vamos a guardar ese dato.

Como curiosidad, para elaborar este script, es necesario esperar 10 segundos entre llamada y llamada a la API de MOZ. En realidad en nuestro script esperamos 11 segundos por seguridad. Todo esto tiene que ver con el tipo de usuario con el que te conectas a la API, en nuestro caso, una cuenta free. Son las limitaciones y reglas propias de las que os hablaba antes, como siempre digo "son sus costumbres y hay que respetarlas".

Guardando datos históricos de MOZ

Aprovechando la iteratividad del bucle creado, y por cada uno de ellos, nos conectamos a la base de datos de Drupal para actualizar el campo en donde se guarda el DA. Y llegado a este punto, le propuse a Xavi una pequeña mejora en el modelo: "¿Y si guardamos los DA anteriores para ir creando un histórico? es que sería una pena dejarlos escapar por cada ejecución!".

Dicho y hecho. El propio script se encarga de crear una tabla con los campos necesarios y allí ir metiendo los DA anteriores justo antes de machacarlos con el DA actual. Esto, al cabo del tiempo, nos supondrá un dato de enorme valor, sobretodo para estadística. Y a mi me encanta la estadística.

Además, y ya para terminar con la parte técnica, tuvimos que rehacer el script por limitaciones en el hosting, reutilizando toda la parte en PHP y adaptándola a una pequeña interfaz gráfica para poder ejecutar el script por tramos ya que debido al alto número de urls se demoraba bastante tiempo y finalizaba la ejecución con un inquietante 'hiccup'.

Y, bueno, si habéis llegado hasta aquí leyendo esto y habéis entendido algo, os doy mi real enhorabuena. He tratado de explicar de la manera más sana y amena el funcionamiento básico de nuestro querido script, y con él, atrás quedarán los días en los que Xavi copiaba y pegaba urls en la web de MOZ para conseguir su preciado DA...

Saludos!!