Si has scrapeado alguna web con ImportXml, la extensión ImportFromWeb te va a gustar y mucho. En este post analizo lo mejor y peor de ambas alternativas.
En la profesión de SEO, quien más y quien menos acaba necesitando scrapear contenidos de una web: a veces de webs propias, otras veces de la competencia. Para llevar a cabo esta tarea existen muchas herramientas, aunque entre los recursos más habituales se encuentran programas como Screaming Frog y su fabulosa función Custom Extraction, extensiones para el navegador como Scraper o soluciones tan de andar por casa como las que atañen a este post: la función de Google SpreadSheets ImportXML.
Una de las grandes ventajas de la función ImportXML es su sencillez y que nos permite scrapear contenido directamente en una hoja de cálculo, y para más goce, este contenido se actualiza periódicamente de forma automática (aproximadamente cada hora). Pero como todo, tiene sus limitaciones y eso es justo lo que me ha llevado a descubrir ImportFromWeb.
Si bien la ventaja de ImportXML es su sencillez de uso, a veces también puede ser su punto débil. Cuestiones como la extracción de contenidos generados mediante JavaScript en el renderizado de la página quédan fuera de su alcance. Es aquí donde ImportFromWeb empieza a lucir.
¿Por qué ImportFromWeb es una seria alternativa a ImportXML?
El motivo por el que llegué hasta ImportFromWeb fue porque ImportXML no lograba extraer información de algunas expresiones XPATH . Pese a que estas mismas expresiones sí funcionaba en Screaming Frog y Scraper, ImportXML no devolvía ningún valor (#N/A).
Tras barajar posibilidades como: un bloqueo por parte de la web objetivo, que el contenido se estuviera generando por JavaScript o fallos en el propio funcionamiento de la fórmula, acabé encontrando ImportFromWeb. Después de instalarlo en Google SpreadSheet, probé la expresión XPATH en cuestión y funcionaba a la perfección. Misterios de la vida.
Con sólo trastear unos minutos ya me quedó claro por qué es una gran alternativa a ImportXML:
- Permite scrapear contenido del JavaScript renderizado. Así es. Si bien ImportXML sólo permite scrapear aquel contenido presente en el HTML source, ImportFromWeb nos permite extraer el contenido generado por JavaScript.
- Permite configurar la geolocalización. De esta forma podemos scrapear el contenido de una web cargándola con una configuración de localización específica.
- Permite usar expresiones regulares para extraer o reemplazar parte del contenido extraído. Esto puede sernos muy útil para limpiar la información scrapeada.
Además de éstas, ImportFromWeb incorpora otras funciones que puedes ver en la web del desarrollador.
Instalando ImportFromWeb
Lo mejor que puedes hacer es probarlo por ti mismo. Su instalación es realmente sencilla. Sólo tienes que hacer lo siguiente:
- Accede a tu hoja de cálculo de Google SpreadSheet
- En la barra de herramientas, pulsa la opción «Complementos -> Descargar complementos»
- En el buscador, escribe «ImportFromWeb» (Obvio)
- Instala la extensión y otórgale los permiso necesarios según te lo vaya solicitando.
- Una vez instalada encontrarás una barra lateral a la derecha donde podrás manejar algunos parámetros de la extensión, refrescar los datos y acceder a la información de tu cuenta:
- Ahora ya puedes empezar a «jugar». ¡Manos a la obra!
¿Cómo funciona ImportFromWeb?
Para explicar cómo funciona tomaremos como referencia nuestra querida función ImportXML, pues para un uso básico funcionan de forma idéntica. Si bien la fórmula ImportXML tiene la siguiente sintaxis:
=importXml(URL, XPATH)
La sintaxis de la extensión ImportFromWeb es idéntica:
=ImportFromWeb(URL, XPATH)
De forma predeterminada, los resultados de estas fórmulas será exactamente el mismo. Eso sí, hay algunas cosas que debemos tener en cuenta:
- Una vez extraidos los datos, ImportXML los autorefresca periódicamente, sin embargo ImportFromWeb requiere accionar manualmente el refresco de estos datos. Una ventaja o un inconveniente, depende de tus objetivos.
- Para refrescar el contenido extraido por ImportFromWeb, basta con ir a «Complementos -> ImportFromWeb | Easy Web Scraping -> Spreadsheet – Update content«
Scrapear contenido generado por JavaScript
Para habilitar la extracción de contenido generado vía JavaScript es necesario especificar una serie de parámetros adicionales en la fórmula base. Para ello debemos hacer lo siguiente:
- En una celda (Por ejemplo A1), definimos la URL a scrapear.
- En otra celda (Por ejemplo A3), definimos la expresión XPATH.
- A continuación, en otra celda (Por ejemplo A2), definimos el parámetro: «jsRendering«. En la celda colindante a su derecha (B2), definimos su valor, en este caso «TRUE».
- La formula definida sería similar a:
=ImportFromWeb(A1; A2; A3:B3)
A modo de ejemplo, vamos scrapear la hora de la web de «Antena 3 Noticias», la cual se genera por JavaScript en tiempo real. La fórmula sería la siguiente:
En ocasiones, puede que los datos generado vía JavaScript no se obtengan de forma inmediata. Esto dependerá del tipo de página que estemos scrapeando. Puede ser que estos datos tarden en generarse y en consecuencia tardemos en extraerlos. Si esto sucede, ImportFromWeb nos indicará que debemos esperar unos instantes y refrescar la solicitud de la fórmula:
- Para ello dirígete a «Complementos -> ImportFromWeb | Easy Web Scraping -> Spreadsheet – Refresh Pending Requests» (Paciencia. Si no sale, vuelve a insistir en unos instantes.)
Sintaxis y otros parámetros de la función
Otros parámetros como el de geolocalización se especifican de forma muy similar. Puedes encontrar toda la información muy bien explicada en la documentación oficial de ImportFromWeb.
Puntos débiles de ImportFromWeb
No todo iba a ser color rosa. Este complemento tiene sus limitaciones que dependiendo de nuestras necesidades pueden ser mayores o menores:
- Hay que refrescar manualmente los datos scrapeados. Como ya hemos mencionado, nos tocará solicitar el refresco de los datos scrapeados. A falta de comprobarlo, quizás una Macro programada desde App Scripts nos ayude a solventar esta limitación.
Hay límite de solicitudes para la fórmula. En concreto 2000 diarias. A los SEOs no nos gustan los límites, pero 2000 consultas diarias deberían ser suficientes.
Actualizado a 19/08/2021: aunque en un inicio esta extensión era gratuita, desde hace ya varios meses ImportFromWeb ha pasado a ser de pago enteramente. El límite de 2000 consultas diarias no está vigente ya, pues ahora hay varios planes de pago que parten de los 11 USD mensuales (150 consultas diarias).
Por lo general y a falta de un mayor uso, ImportFromWeb me parece todo un descubrimiento para las pequeñas (y no tan pequeñas) tareas en el día a día de un SEO. Seguramente ImportXML siga siendo mi ojito derecho por su sencillez y por estar implementado de forma nativa en Google Spreadsheets, pero no me cabe duda que desde este momento los iré alternando en mi trabajo cotidiano. ¡Nunca viene mal tener una alternativa a lo que tanto nos gusta! ¿Qué os parece? Si ya lo habéis probado no dudéis en comentar vuestra experiencia.
Hola Manuel,
Justo soy el creador de ImportFromWeb.
Pues, me ha encantado tu artículo! Espero mucho que pueda ayudar a los SEOs ya que, en mi opinión, no hay ningún lugar mejor que Google Sheets para jugar con datos.
Hablando de los puntos débiles:
– Refrescar: Los datos se quedan en cache 24 horas, pero, tal como dices, se puede «forzar» el refresh. Estamos a punto de lanzar una opción para programar la frecuencia de refresh
– Limites: Vamos a lanzar diferentes tarifas para ir más allá de estos limites. Piensa que atrás hay servidores que curran muchísimo para scrapear páginas tan complicadas como Google Search, Amazon, Trip advisor, …
Aprovecho para anunciar novedades…
– Pronto, ImportFromWeb ira recordando datos historicos. Muy útil para analizar evoluciones de una posición en el SERP, el numéro de followers de un instagramer, …
– He lanzado ImportJSON para importar API o cualquier fuente devolviendo JSONs.
ImportJSON + ImportFromWeb es un paquete muy potente.
Muy pronto explicaré como se puede utilizar para sacar datos de SimilarWeb, Google Trends, y mucho más 😉
Está disponible aquí: https://nodatanobusiness.com/importjson/
Matt
NoDataNoBusiness
https://www.linkedin.com/in/google-sheets-add-on-maker/
Muchas gracias, Matt. Es un placer que le hayas dedicado unos minutos a leer y aclarar algunos de los puntos sobre el addon, ¿quién mejor que su propio creador para hacerlo?
Estaré atento a las novedades de ImportJson y espero poder contar mi experiencia cuando lo pruebe. Seguro que se le puede sacar mucho partido.
¡Un saludo!