# Ejercicio Thread04 - git init - git config --global user.name "Juanjo" - git config --global user.email "juanjo@fp.ieslamar.org" - git add . - 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) ## Estrategia - Al programa se le pasa la URL inicial - Guardamos el contenido de la página en un fichero - Buscamos enlaces - Guardamos el enlace en base de datos - Volvemos a lanzar la URL encontrada - Se repite hasta que no haya más enlaces