Trucos rápidos: Contenido duplicado
Hoy: Ver el contenido duplicado de tu web usando Python y Google Colab
¿Qué es el SEO?
SEO (Search Engine Optimization): técnicas para mejorar visibilidad.
- On-page: optimización directa.
- Off-page: estrategias externas (backlinks).
Google valora relevancia, UX y técnica.
¿Cómo funciona?
Bots rastrean e indexan, evaluando:
- Relevancia por palabras clave
- Autoridad por backlinks
- Técnicos (velocidad, responsive, SSL)
Buena arquitectura SEO
- Páginas importantes accesibles en pocos clics.
- Enlaces internos estratégicos.
- URLs limpias y descriptivas.
- Jerarquía H1/H2/H3.
¿Por qué es malo el contenido duplicado?
Confunde a los motores de búsqueda y divide la relevancia entre páginas, bajando posiciones.
Python + Colab para detectar contenido duplicado
Librerías
requests- descarga HTMLBeautifulSoup- parsea textoTfidfVectorizer- texto a vectorescosine_similarity- similitud 0-1
Código completo
import requests
from bs4 import BeautifulSoup
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import re
urls_filtradas = [url for url in enlaces_internos_unicos
if '/services' not in url and '/category' not in url]
def obtener_contenido_filtrado(url):
try:
respuesta = requests.get(url)
sopa = BeautifulSoup(respuesta.content, 'html.parser')
for elemento in sopa.select('nav, footer, header, aside'):
elemento.decompose()
parrafos = [p.get_text() for p in sopa.find_all('p')]
texto_filtrado = []
for parrafo in parrafos:
if not re.search(r"categoría|archivos|navegación|menú", parrafo, re.IGNORECASE):
texto_filtrado.append(parrafo)
return ' '.join(texto_filtrado)
except Exception as e:
print(f"Error al obtener contenido de {url}: {e}")
return ""
def detectar_duplicados(urls, umbral=0.95):
textos = [obtener_contenido_filtrado(url) for url in urls]
vectorizador = TfidfVectorizer().fit_transform(textos)
sim_matrix = cosine_similarity(vectorizador)
duplicados = {}
for i in range(len(urls)):
duplicidad_total = 0
detalles_duplicados = []
for j in range(len(urls)):
if i != j:
duplicidad_total += sim_matrix[i][j]
if sim_matrix[i][j] > umbral:
detalles_duplicados.append((urls[j], sim_matrix[i][j]))
duplicidad_total /= (len(urls) - 1)
duplicados[urls[i]] = (duplicidad_total, detalles_duplicados)
return duplicados
duplicados = detectar_duplicados(urls_filtradas)
for url, (duplicidad_total, detalles) in duplicados.items():
print(f"\nURL: {url}\nTasa total de duplicidad: {duplicidad_total:.2f}")
if detalles:
for dup_url, similitud in detalles:
print(f" {dup_url} similitud {similitud:.2f}")
Instalación
!pip install scikit-learn
Cómo funciona
- Filtración de URLs.
- Extracción de párrafos relevantes.
- Eliminación de patrones con regex.
- Vectorización TF-IDF.
- Cálculo de similitud coseno.
- Identificación con umbral 0.95.
Enlaces
- Post anterior (rastreo de URL):
/blog/trucos-rapidos-para-salir-del-paso-rastreo-de-url/ - Cuaderno Colab: https://colab.research.google.com/drive/1sihrcK5Z5FqHHmonAXoQggQ05WfbRZyo
CTAs
- Formulario de suscripción
- "Reservar mi cita" → networking 30 min



