¿Alguna vez ha deseado utilizar Python para extraer una lista depurada de URL del mapa del sitio de una página web? En esta breve guía, le explicaré una manera rápida y sencilla de realizarlo utilizando Python y Google Colab.
Si simplemente desea probar el código, puede hacer una copia de este archivo de Google Colab y experimentarlo usted mismo.
Bibliotecas requeridas
Para esta tarea, utilizaremos las siguientes bibliotecas:
Beautiful Soup 4
Beautiful Soup 4 (BS4) es una biblioteca de Python utilizada para el raspado web y el análisis de documentos HTML o XML, que empleamos aquí para extraer URL del archivo robots.txt y de los mapas del sitio. Para obtener más información sobre Beautiful Soup 4, puede visitar el sitio web oficial aquí.
Python Requests
La biblioteca Requests es un módulo de Python potente utilizado para realizar solicitudes HTTP, y desempeña un papel crucial en este código al recuperar el archivo robots.txt y los mapas del sitio de las URL proporcionadas. Para obtener más información sobre la biblioteca Requests, puede visitar la documentación oficial aquí.
Pandas
Pandas no es estrictamente necesario para esta tarea, ya que podríamos simplemente generar todas las URL en una lista. Sin embargo, es probable que desee realizar un análisis adicional de las URL una vez que las haya extraído, por lo que tenerlas en un DataFrame de Pandas será útil. Para obtener más información sobre Pandas, puede visitar la documentación oficial aquí.
Comprendiendo el código
Analicemos el código paso a paso:
1. Importación de las bibliotecas requeridas
import requests
from bs4 import BeautifulSoup
import pandas as pd
2. Extracción de URL del mapa del sitio
def extract_urls_from_sitemap(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'xml')
urls = []
if soup.find('sitemapindex'):
sitemaps = soup.find_all('sitemap')
for sitemap in sitemaps:
sitemap_url = sitemap.find('loc').text
print(f'found sitemap index: {sitemap_url}. Adding URLs to list')
urls.extend(extract_urls_from_sitemap(sitemap_url))
elif soup.find('urlset'):
print(f'no nested indexes found in the main sitemap file. Adding URLs to list')
locs = soup.find_all('loc')
urls = [loc.text for loc in locs]
return urls
La función extract_urls_from_sitemap
toma como entrada una URL de un mapa del sitio y extrae recursivamente todas las URL presentes en el mapa del sitio. Utiliza la función requests.get
para recuperar el contenido del mapa del sitio y la biblioteca BeautifulSoup
para analizar la estructura XML. La función verifica si el mapa del sitio es un índice de mapa del sitio (contiene mapas del sitio anidados) o un mapa del sitio regular (contiene entradas de URL). Luego procede en consecuencia, extrayendo las URL y anexándolas a la lista urls
.
3. Creación de un DataFrame
def create_dataframe(urls):
df = pd.DataFrame(urls, columns=['URL'])
return df
La función create_dataframe
toma como entrada una lista de URL y crea un DataFrame de Pandas para almacenar las URL. Cada URL se coloca en una fila separada bajo la columna ‘URL’.
4. Recuperación de URL del mapa del sitio
def get_urls_from_sitemap(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
for line in soup.text.split('\n'):
if line.startswith('Sitemap:'):
sitemap_url = line.split(': ')[1]
all_urls = extract_urls_from_sitemap(sitemap_url)
df = create_dataframe(all_urls)
return df
robots_txt_url = 'https://sheetsociety.com/robots.txt'
urls_df = get_urls_from_sitemap(robots_txt_url)
La función get_urls_from_sitemap
toma como entrada la URL del archivo robots.txt del sitio web. Recupera el archivo y utiliza Beautiful Soup para extraer la URL del mapa del sitio. Luego llama a la función extract_urls_from_sitemap
para obtener todas las URL del mapa del sitio. Finalmente, crea un DataFrame utilizando la función create_dataframe
, almacenando las URL extraídas.
Ejecución del código
Para ejecutar el código y extraer URL de un mapa del sitio, siga estos pasos:
- Abra Google Colab o cualquier entorno de Python que sea compatible con las bibliotecas requeridas. Si no ha utilizado las bibliotecas anteriormente, necesitará instalarlas primero. Puede hacerlo ejecutando
!pip install [the name of the library that's missing]
- Pegue el código en la celda de código.
- Reemplace la variable
robots_txt_url
con la URL del archivo robots.txt que contiene la URL del mapa del sitio deseado - Ejecute el código.
Conclusión
En este artículo, hemos explorado un fragmento de código Python que extrae URL de mapas del sitio de páginas web, incluso en casos con índices anidados. Al aprovechar el poder de Beautiful Soup, Requests y Pandas, los especialistas en SEO pueden recuperar fácilmente URL de mapas del sitio para realizar análisis adicionales, optimización y otras tareas relacionadas con el SEO. Google Colab proporciona un entorno conveniente para ejecutar este código y obtener el DataFrame de URL deseado.