Cómo obtener las URLs de los resultados Google en Sheets

¿Necesitas extraer las URLs de los resultados de Google? Mira este caso SEO en donde se requirió obtener 600 URLs indexados en Google.
Con los datos construidos, copiando la función se obtiene el resultado a escala.

En la semana estuve trabajando con un cliente SEO que tenía el siguiente problema:

  • Googlebot desperdiciaba un 7.5% del crawling en URLs 404 que quedaron sueltos de una migración.
  • Yo tenia ese listado de URLs en un Google Sheets que saqué del Screaming Frog Log Analyzer, pero el tema es que eran casi 600 URLs (solo en ese periodo analizado) que había que ir buscando una por una su nueva versión; un parto.

Si yo pudiese obtener esas nuevas URLs de una forma automatizadas, podría armar el CSV e importar las redirecciones 301 al SEOPress.

Sabía, además, que Google tenia las nuevas URLs indexadas y la forma era similar. Por ejemplo.

  • URL que arroja 404 => /diseno-web-para-turismo/
  • URL indexada por Google => /contratame/diseno-web-para-turismo/

De esta forma si yo hacia la búsqueda “diseno-web-para-turismo site:carlostinca.com” obtenía en el primer resultado la página correcta a la que yo debía hacer la redirección.

Solo me faltaba conseguir alguna función o herramienta en Google Sheets que me dejase obtener datos de la pantalla (algo tal vez como ImportHTML), con el fin de obtener las nuevas URLs indexada por Google.

Obtener la parte de la URL que me interesa

Lo primero que debía hacer era obtener la porción que me interesaba de la URL.

Por ejemplo, si yo tenia:

https://carlostinca.com/diseno-web-para-turismo/

Necesitaba obtener:

diseno-web-para-turismo

Con esto armo la búsqueda que luego usaré.

Esto se resuelve rápidamente con la función Split (que vergonzosamente la descubrí hace poco).

=SPLIT(A1, “/”)

Esto da por resultado la URL separada de esta forma:

  • https:
  • carlostinca.com
  • diseno-web-para-turismo

Resultado de usar Split a partir de una URL en Google Sheets

De esta forma ya obtuve la porción de URL que me interesaba en una columna.

ImportFromWeb

En una rápida búsqueda me encontré con este artículo de la empresa NoDataNoBusiness, que creó ImportFromWeb.

No conozco bien en detalle la herramienta, pero tengo entendido que ImportFromWeb permite escanear un sitio web y obtener información de allí a través de un XPATH.

Desconozco si ImportXML puede hacer lo mismo, ya es algo que me excede.

Conociendo la herramienta, el segundo paso era ver como utilizarla. En resumen, debía obtener un XPATH con lo que iba a obtener una URL en una página especifica (en mi caso, los resultados de Google).

Tengo muy poca experiencia en XPATH, pero en base a búsquedas y prueba y error llegué a este código:

//div[@class=’g’][1]/descendant::*[@href][1]/@href

Ese código devuelve, en teoría, la URL del primer resultado.

Por último, debía obtener una URL que lleve a los resultados de Google con la búsqueda “diseno-web-para-turismo site:carlostinca.com”.

La URL en cuestión es esta:

https://www.google.com/search?q=servicios-de-seo+site%3Acarlostinca.com&num=1

  • https://www.google.com/search?q= => Es la primera parte de la URL, siempre fija.
  • diseno-web-para-turismo+site%3Acarlostinca.com => Es el equivalente a “diseno-web-para-turismo site:carlostinca.com”, + es un espacio, y %3A es : (dos puntos).
  • & permite sumar otro parámetro a la URL.
  • num=1 => diría yo que es la parte más importante, esto marca la cantidad de resultados que devuelve Google, si no estuviese eso la página devolvería 10 resultados.
    El problema con esto es que se me complicó buscar la forma de que solo tome el primer resultado, la herramienta siempre me traía todos los resultados. Entonces para resolver eso descubrí que poniendo el parámetro num podemos controlar la cantidad de resultados.
    Como la búsqueda siempre devolvía como primer resultado la URL que me interesaba (por tener la misma URL), podía estar tranquilo de que siempre iba a obtener lo que quería.

Teniendo el patrón de URL de Google y la búsqueda (diseno-web-para-turismo), puedo construir la URL usando la función de CONATENAR.

=CONCATENAR(“https://www.google.com/search?q=”,D1,”+site%3Acarlostinca.com&num=1″)

Siendo D1, el resultado que obtuvimos antes en el Split.

El resultado de la función Concatenar de Google Sheets para obtener la URL de Google

Si van a la URL, pueden ver que el primer resultado en la página indexada.

Por último, falta extraer con ImportFromWeb el primer resultado. Teniendo el XPATH y la URL que vamos a importar, la función se vuelve fácil de armar:

=IMPORTFROMWEB(C2,”//div[@class=’g’][1]/descendant::*[@href][1]/@href”)

Donde C2, es la URL de la búsqueda que construimos antes.

Si todo va bien, el resultado en la primera URL que Google da por resultado a la busqueda planteada; para mi caso es la URL que me sirve para generar la redirección (quisiera mostrar el resultado, pero gasté todos la cuota de uso gratuita).

A partir de acá es copiar la función hacia el fondo para que automáticamente Google Sheets encuentre todas las URLs indexadas a partir del análisis de Access Logs.

Con los datos construidos, copiando la función se obtiene el resultado a escala.

Luego es cuestión de construir el CSV e importarlo a su plataforma (en mi caso, WordPress a través de SEOPress).

Conclusión

Hay algunos puntos que quedarían pendiente por mejorar o ver:

  • No se si esto se puede hacer también con ImportXML. Seria genial que se pueda ya que evitaría tener que abonar una herramienta extra para lograr esta tarea.
  • En algunos casos (2 de aproximadamente 600) la función me devolvía 2 resultados (y si entraba a la URL, claramente había un resultado). No tengo idea de donde sacó ese segundo resultado.
  • Este es un caso muy específico, pero teniendo el buscador de Google a disposición, se puede jugar con otros patrones utilizando, por ejemplo, inurl: o búsquedas negativas. Ahí ya es cuestión de creatividad.
  • ImportFromWeb tenia el problema que cada tanto había resultados que estaban pendiente, y tenia que clickearle para que resolviera la función. En volúmenes grandes esto podría ser un problema (en mi caso, tuve que ir uno por uno para que se activase; 30 minutos extras).

Dicho esto, me pareció una interesante resolución para obtener la URLs de los resultados de Google Sheets y queria compartirla.

Desde ya estoy totalmente abierto a recomendaciones o formas de mejorar la función o el XPATH. ¡Estoy en Twitter!

¡Gracias!