04 Jun
portátil con python con la api pagespeed insights

Cómo obtener las principales métricas de Page Speed Insights de varias URLs al mismo tiempo

Project Manager & SEO @ Vital Innova

En el blog de Vital Innova ya hemos hablado en más de una ocasión sobre la importancia que tiene la velocidad de carga de una web, cómo mejorar esa carga en WordPress sin plugins y con ellos (por ejemplo, con WP-Rocket) y también hemos visto algunas de las herramientas principales con las que podemos medir el tiempo de carga de un sitio web.

Si te has leído alguno de los artículos anteriores, ya te deberíamos de haber convencido –al menos un poquito– de que la velocidad de carga es una de las métricas principales que debes de medir en tu sitio web. Y no es sólo porque lo digamos nosotros, el propio Google ya anunció en julio de 2018 (“Speed Update”) que la velocidad de carga de las páginas se iba a tener en cuenta a la hora de posicionar resultados en las búsquedas móviles, afectando sobre todo a aquellas más lentas.

Entre las principales herramientas disponibles que ya hemos mencionado para medir el rendimiento, Google pone a nuestra disposición algunas como PageSpeed Insights o Lighthouse con las que medir y obtener datos sobre el rendimiento real de las páginas tanto en dispositivos móviles como en escritorio. Aunque tras el último anuncio de Google donde advertía que, por defecto, todos los nuevos dominios iban estar dentro ya del Mobile-First Indexing a partir del 1 de julio de 2019, sobre todo nos interesará el rendimiento en estos dispositivos.

Vale, la Home de mi web es rápida pero… ¿y el resto?

Elegimos herramienta, introducimos el dominio de la web, vemos que los datos no son como para ahorcarse y a otra cosa 🦋

Y es que lo de olvidarse de analizar también las páginas de conversión es uno de los errores que se suelen cometer a la hora de analizar el rendimiento de un sitio web. ¿Qué pasa si tu CMS incluye muchos más JS en las páginas de producto? ¿O en la del carrito/pago? ¿Y si te has despistado y has subido una imagen de 8Mb como foto principal de producto?

Aunque podríamos echar mano de Google Analytics para tener una idea aproximada de estas cosas comparando los tiempos medios de carga, podemos aprovechar la API de PageSpeed Insight para realizar un análisis más amplio y rápido de sin tener que perder el tiempo introduciendo una a una todas las URLs que nos interesan.

PageSpeed Insights API al rescate

La API de PSI mide el rendimiento de las URLs que le pasamos y su puntuación a través de Lighthouse, así que tenemos a nuestra disposición cualquiera de las métricas que encontramos en sus informes también vía API.

Para realizar el envío de las URLs, yo llevo trabajando ya un tiempo con el script en Python que compartió en GitHub Ben Burkholder de linkmedia360.com, en el que le pasamos un listado de URLs en un archivo pagespeed.txt y nos devuelve los resultados en un archivo CSV.

Al código de este script, le añadí una pequeña modificación que también comparto ahora con vosotros para añadir alguna métrica más que me interesaba analizar en algún proyecto. De esta forma, además de los datos de “First Contentful Paint” y “First Interactive” que se recogen en el código original, yo añadí “First Contentful Paint 3G” y el “Performance Score”.

Los pasos, como decía, son muy simples:

  1. Volcamos todas las URLs que queramos analizar en un archivo pagespeed.txt dentro de la carpeta
  2. Ejecutamos el script. Obviamente necesitaremos tener Python instalado: “python3 pagespeed-api.py”.
  3. Lo dejamos trabajar hasta que finalice (iremos viendo por terminal el progreso si queremos)
  4. Al finalizar, tendremos los resultados en el archivo pagespeed-results.csv que se genera.

En casa del herrero…

Una vez que tenemos los resultados, nos queda la parte más importante, analizar y detectar problemas en las diferentes secciones: a partir del archivo csv podemos llevarlo por ejemplo a DataStudio e incluirlo en nuestros informes, trabajar con los datos en Excel y filtrar aquellos que tengan un bajo rendimiento o un tiempo de carga más alto del deseado, etc..