|
||
---|---|---|
_servidorweb_ | ||
apirest | ||
bbdd | ||
ficheros | ||
graficos | ||
navegadores | ||
pruebas_ventanas | ||
scraping | ||
.gitignore | ||
README.md | ||
ejemplo.txt | ||
main.py |
README.md
pip install cefpython3
pip install tkhtmlview
pip install PyQt5 PyQtWebEngine
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
-
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.
-
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.
- Mientras la cola de URLs por visitar no esté vacía y no se haya alcanzado el límite de URLs a rastrear:
-
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.
- Respetar el archivo
-
Guardar Resultados:
- Almacenar los datos extraídos en una base de datos o archivo, dependiendo de los objetivos del crawler.
-
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
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