En este artículo, te explico cómo utilizar scripts Python para analizar el SEO y detectar enlaces rotos en tu sitio web. ¡Vamos al grano!
Configuración del entorno Python
Necesitamos configurar nuestro entorno de trabajo:
- Instalación de Python: Instala Python 3.7 o superior desde el sitio oficial de Python. Asegúrate de marcar la opción «Add Python to PATH» durante la instalación. Puedes verificar la instalación abriendo una terminal y ejecutando
python --version
. - Instalación de bibliotecas esenciales: A continuación, instalaremos las bibliotecas necesarias con el siguiente comando:
pip install requests beautifulsoup4 pandas matplotlib
Estas bibliotecas nos permitirán realizar solicitudes HTTP, analizar el contenido HTML, manejar datos y visualizar resultados.
Tip: Si trabajas en un proyecto a largo plazo o en equipo, considera usar un entorno virtual con venv
para manejar tus dependencias de forma aislada.
Análisis de elementos SEO on-page
Comencemos con un script básico para analizar algunos elementos SEO on-page:
import requests
from bs4 import BeautifulSoup
import pandas as pd
def analizar_seo_onpage(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.find('title').text if soup.find('title') else 'No title'
meta_description = soup.find('meta', attrs={'name': 'description'})
meta_description = meta_description['content'] if meta_description else 'No meta description'
h1 = soup.find('h1').text if soup.find('h1') else 'No H1'
return {
'URL': url,
'Title': title,
'Meta Description': meta_description,
'H1': h1
}
# Ejemplo de uso
url = 'https://www.ejemplo.com'
resultado = analizar_seo_onpage(url)
df = pd.DataFrame([resultado])
print(df)
Este script analiza elementos SEO clave como el título, la meta descripción y el encabezado H1 de una página web.
Tip adicional: Para analizar otros elementos como etiquetas alt
de las imágenes o verificar la cantidad de encabezados H2
y H3
, simplemente amplía el script para buscar otros selectores HTML. Esto te dará una visión más completa del contenido.
Detección de enlaces rotos
Detectar y corregir enlaces rotos en tu sitio es crucial para evitar que los usuarios abandonen tu sitio. Aquí un script para detectar estos enlaces:
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
def verificar_enlaces(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
enlaces_rotos = []
for enlace in soup.find_all('a'):
href = enlace.get('href')
if href and not href.startswith(('mailto:', 'tel:')):
enlace_completo = urljoin(url, href)
try:
respuesta_enlace = requests.head(enlace_completo, allow_redirects=True)
if respuesta_enlace.status_code >= 400:
enlaces_rotos.append((enlace_completo, respuesta_enlace.status_code))
except requests.RequestException:
enlaces_rotos.append((enlace_completo, 'Error de conexión'))
return enlaces_rotos
# Ejemplo de uso
url = 'https://www.ejemplo.com'
enlaces_rotos = verificar_enlaces(url)
for enlace, status in enlaces_rotos:
print(f"Enlace roto: {enlace} - Estado: {status}")
Este script recorre todos los enlaces de una página y verifica su estado, reportando aquellos que están rotos o inaccesibles.
Tip adicional: Puedes programar este script para ejecutarse de forma regular (por ejemplo, una vez por semana) utilizando el programador de tareas de tu sistema operativo, para asegurarte de que siempre estés al tanto de posibles errores. Para más tips sobre cómo optimizar enlaces y recursos de tu sitio, consulta estos 7 tips SEO que puedes aplicar tú mismo.
Análisis de velocidad de carga
La velocidad de carga es un factor importante para el SEO y la experiencia del usuario. Aquí tienes un script simple para medir el tiempo de carga de una página:
import requests
import time
def medir_velocidad_carga(url):
inicio = time.time()
response = requests.get(url)
fin = time.time()
tiempo_carga = fin - inicio
tamano_pagina = len(response.content) / 1024 # Tamaño en KB
return {
'URL': url,
'Tiempo de carga (segundos)': round(tiempo_carga, 2),
'Tamaño de página (KB)': round(tamano_pagina, 2)
}
# Ejemplo de uso
url = 'https://www.ejemplo.com'
resultado = medir_velocidad_carga(url)
print(resultado)
Este script mide el tiempo que tarda en cargarse una página y su tamaño, factores importantes para la experiencia del usuario y el SEO.
Tip adicional: La herramienta PageSpeed Insights de Google puede proporcionarte más detalles sobre el rendimiento de tu sitio web y sugerencias para optimizar la velocidad de carga.
Visualización de datos SEO
Para una mejor comprensión de los datos, podemos usar Matplotlib para crear visualizaciones que nos permitan analizar la información de manera gráfica:
import matplotlib.pyplot as plt
def visualizar_tiempos_carga(urls):
resultados = [medir_velocidad_carga(url) for url in urls]
df = pd.DataFrame(resultados)
plt.figure(figsize=(10, 6))
plt.bar(df['URL'], df['Tiempo de carga (segundos)'])
plt.title('Tiempo de carga por URL')
plt.xlabel('URL')
plt.ylabel('Tiempo de carga (segundos)')
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()
# Ejemplo de uso
urls = ['https://www.ejemplo1.com', 'https://www.ejemplo2.com', 'https://www.ejemplo3.com']
visualizar_tiempos_carga(urls)
Este script crea un gráfico de barras que compara los tiempos de carga de diferentes URLs, lo cual es útil para identificar qué páginas necesitan optimización adicional.
Tip adicional: Al analizar estos datos, presta atención a las URLs que tarden más de 3 segundos en cargar. Generalmente, un tiempo de carga superior a 3 segundos puede incrementar la tasa de rebote. Para aprender cómo mejorar el rastreo y optimizar el Crawl Budget, te puede interesar este artículo sobre eliminar redirecciones del sitemap.
Mantente actualizado con las tendencias SEO actuales y los cambios en los algoritmos de motores de búsqueda, y adapta tus scripts en consecuencia. Con la combinación adecuada de conocimientos SEO y habilidades de programación en Python, podrás obtener valiosas ideas para mejorar el rendimiento de tu sitio web en los resultados de búsqueda.