Cómo encontrar enlaces rotos con Python

SEO

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!

enlaces rotos python

Configuración del entorno Python

Necesitamos configurar nuestro entorno de trabajo:

  1. 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.
  2. 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.

Daniel Pajuelo
Daniel Pajuelo es ingeniero informático y SEO Senior, actualmente trabajando en Guruwalk e impartiendo clases en BIG School (antes BIGSEO Academy). Ver más
Categorías SEO

Continua leyendo

ChatGPT para Keyword Research

Descubre cómo combinar el poder de la IA con herramientas tradicionales como Semrush y Ahrefs para descubrir oportunidades SEO únicas. Con ejemplos de prompts y casos reales.

Cómo encontrar los Backlinks de un sitio con Python

En este artículo, te explico cómo encontrar los backlinks existentes y distinguir su calidad, diferenciando entre enlaces dofollow y nofollow utilizando código Python.

Cómo permitir HTML en la biografía del autor en WordPress

Aquí te muestro cómo permitir HTML en las biografías de autor en WordPress, mejorando así la presentación y el SEO de los perfiles de tu sitio.