diff --git a/README.md b/README.md index 4329ff6..2ac1ab1 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,65 @@ - git commit -m "first commit" - git remote add origin https://git.ieslamar.org/gitea/thread4.git - git push -u origin main +Un web crawler, también conocido como spider o bot de rastreo, es un programa que navega de manera automática por la web para recopilar información. El objetivo de un crawler es visitar páginas web, extraer su contenido y seguir los enlaces que encuentre en ellas para descubrir y analizar nuevas páginas. A continuación, te explico un algoritmo básico de un web crawler: + +--- + +### Algoritmo Básico de un Web Crawler + +1. **Inicialización**: + - Crear una lista (cola) de URLs por visitar (normalmente se empieza con una URL de inicio o "seed URL"). + - Crear una lista (o conjunto) de URLs ya visitadas para evitar duplicados. + +2. **Proceso de Rastreo**: + - Mientras la cola de URLs por visitar no esté vacía y no se haya alcanzado el límite de URLs a rastrear: + - **Extraer la URL actual**: Obtener una URL de la cola. + - **Verificar si fue visitada**: Si la URL ya ha sido visitada, pasar a la siguiente URL de la cola. + - **Descargar el Contenido de la Página**: Realizar una solicitud HTTP (GET) para descargar el contenido de la página. + - **Analizar el Contenido**: Analizar la página HTML para extraer datos y obtener todos los enlaces. + - **Procesar los Enlaces**: + - Filtrar y normalizar los enlaces (convertir enlaces relativos en absolutos, eliminar duplicados, etc.). + - Agregar los enlaces encontrados a la cola de URLs por visitar, siempre que no hayan sido visitados previamente. + - **Marcar como Visitada**: Agregar la URL actual a la lista de URLs visitadas. + +3. **Reglas de Politeness y Frecuencia** (opcional): + - Respetar el archivo `robots.txt` del sitio web, que define restricciones de rastreo. + - Añadir un retardo o "espera" entre las solicitudes para evitar sobrecargar el servidor. + +4. **Guardar Resultados**: + - Almacenar los datos extraídos en una base de datos o archivo, dependiendo de los objetivos del crawler. + +5. **Fin del Proceso**: + - Terminar cuando la cola esté vacía o se alcance un número máximo de URLs rastreadas. + +--- + +### Ejemplo Simplificado en Pseudocódigo + +```plaintext +Inicializar cola_de_URLs con URL_inicial +Inicializar conjunto_de_URLs_visitadas como vacío + +Mientras cola_de_URLs no esté vacía y no se alcance el límite: + URL_actual = extraer_de(cola_de_URLs) + + Si URL_actual no está en conjunto_de_URLs_visitadas: + contenido = descargar_contenido(URL_actual) + conjunto_de_URLs_visitadas.agregar(URL_actual) + + enlaces = extraer_enlaces(contenido) + Para cada enlace en enlaces: + Si enlace no está en conjunto_de_URLs_visitadas: + agregar_a(cola_de_URLs, enlace) + + procesar_contenido(contenido) # Guardar o analizar los datos + + esperar_por(unos_segundos) + +``` + +Este es el esquema básico de un crawler, pero en entornos complejos, los crawlers se pueden optimizar con técnicas de paralelización, almacenamiento distribuido y mayor control sobre la profundidad de rastreo y priorización de URLs. + ## Objetivo del programa - Simular el funcionamiento de un rastreador web (bot crawler)