¿Cómo extraer las URLs de un sitemap?

En este tutorial, os explicaré cómo extraer las URLs de un sitemap usando varios métodos diferentes: 

  • Google Sheets con la fórmula IMPORTXML 
  • Screaming Frog 
  • Python 
  • Servicio externo

Ver el sitemap de una web

Primero empecemos por lo más elemental. Un breve recordatorio de cómo ver los sitemaps de las webs. Tenemos varias maneras:
-De forma manual podemos probar a teclear en la barra de navegación de Google Chrome el nombre del dominio seguido de las típicas /sitemap.xml o /sitemap-index.html o incluso /sitemap_index.xml.


-Si la dirección del sitemap no es tan «lógica» podemos probar a encontrar el archivo robots.txt y a partir de ahí ver si se encuentra en este archivo la url del sitemap.
Para encontrar el robots.txt podemos hacer el mismo ejercicio, teclear en el navegador dominio + /robots.txt

Extraer las URLs de un sitemap con Google Sheets

Una de las ventajas de extraer las URLs directamente en Google Sheets es la posibilidad de incluir datos de Google Analytics y Google Search Console en la misma hoja de cálculo. Para hacerlo, podéis seguir las siguientes instrucciones: 

  • Obtener la URL del sitemap que queréis extraer, en general: https://www.ejemplo.es/sitemap.xml. En el caso que no sepáis cuál es la URL del sitemap, podéis mirar en el archivos robots.txt (https://www.ejemplo.es/robots.txt), ya que a veces la URL está indicada allí. 
sitemap-en-robots-txt
  • Cread una nueva hoja de cálculo en Google Sheets. Podéis usar el enlace https://sheets.new para crearla en un solo clic sin tener que pasar por la página de inicio de Google Drive o Google Sheets. 
  • En una de las celdas, incluid la siguiente fórmula para extraer los resultados
ejemplo-importxml-sietmap-google-sheets

Como veréis, es una de las técnicas más simples que existen para hacerlo. Sin embargo, no todo el mundo trabaja con Google Sheets, por lo tanto a continuación veremos cómo hacerlo usando otros métodos. 

Extraer las URLs de un sitemap con Screaming Frog

Screaming Frog es una de las herramientas más útiles para cualquier persona que trabaja en SEO. Para extraer URLs de un sitemap (sin rastrearlas), existe un método muy simple. 

  • Abrid Screaming Frog y usar el modo List
modo-list-screaming-frog
  • Darle al botón “Upload” y elegid la opción de “Sitemap” o “Sitemap Index” en función del tipo de archivo que tengáis. Si usáis un sitemap index, la herramienta os indicará cuáles son las URLs de todas las URLs en los sitemaps que tenéis enlazados desde este archivo. 
menu-descargar-sitemap-screaming-frog
  • Indicad la URL del archivo
descarga-sitemap-screaming-frog
  • Esperad un poco, seleccionad el texto que aparece en la ventana (CMD+A o CTR+A para seleccionar todos el texto) y copiadlo (CMD+C o CTR+C). 
  • Pegad el texto en una hoja de cálculo 
  • Eliminad las dos primeras líneas y la última 
  • Buscad “Found “ (con el espacio) y reemplazadlo por “” (nada)
buscar-reemplazar-google-sheets
  • Ya deberíais tener el listado completo. 

Obviamente, si queréis obtener información sobre estas URLs (códigos de respuesta por ejemplo), deberéis dejar que la herramienta rastree todo pero el objetivo de este tutorial es explicar cómo recuperar el listado de URLs, no rastrearlas 😉 

Extraer las URLs de un sitemap con Python

Para los que usan Python en su flujo de trabajo, podéis usar la siguiente fórmula: 

def ExtractSitemap(url, sitemap_index):
xml = []
final_xml = []

if sitemap_index == 0:
r = requests.get(url)
soup = Soup(r.content, features='lxml')
urls = soup.findAll('loc')

for element in urls:
url = str(element)
url = url.replace('', '').replace('', '')
final_xml.append(url)

elif (sitemap_index == 1):

r = requests.get(url)
soup = Soup(r.content, features='lxml')
urls = soup.findAll('loc')

for element in urls:
url = str(element)
url = url.replace('', '').replace('', '')
xml.append(url)

for element in xml:
r = requests.get(element)
soup = Soup(r.content, features='lxml')
urls = soup.findAll('loc')
data_new.append(element)

for element in urls:
url = str(element)
url = url.replace('', '').replace('', '')
final_xml.append(url)

return final_xml

Esta función necesita dos argumentos: 

  • La URL del sitemap 
  • Saber si el sitemap es un index (1) o un sitemap normal (0)

Para que esta función funcione, necesitaréis tener tanto Requests como BeautifulSoup instalados en vuestro entorno Python. 

Extraer las URLs de un sitemap con un servicio externo

Existen varios servicios externos que permiten descargar el listado de URLs de un sitemap, pero si tenéis que elegir uno, os aconsejo https://robhammond.co/tools/xml-extract que es simple pero eficiente. 

xml-sitemap-extractor

Simplemente indicando la URL del sitemap, os extraerá las URLs. Nada más, nada menos 🙂 

Espero que os haya servido esta guía. Si os ha gustado, no dudéis en compartirla. Y para cualquier duda que tengáis, podéis poneros en contacto conmigo a través de los comentarios de este post.