Un WebCrawler es un sistema que explora un conjunto de páginas web de manera metódica y automatizada, los resultados de esta exploración pueden servir para buscar información específica, alimentar un motor de búsqueda y para hacer minería de datos.
Si bien un WebCrawler se enfoca en el análisis de exhaustivo de páginas web los principios y procesos del crawling pueden aplicarse a cualquier tipo de información hipertextual (contenidos y referencias).
El proceso consiste en partir de una lista original de sitios web que serán los primeros en explorarse, se procesan las páginas, luego se extraerán los links de dichas páginas, se crea una nueva lista y se vuelve a explorar de manera recursiva.
Paso a paso sería:
Se obtiene lista inicial de páginas a explorar
Se verifican los que los links estén correctos y sean válidos por algún método de normalización
Se procesa el contenido de la página ya sea para indexar, buscar información, etc.
Se extraen los links
Se deben filtrar los links inválidos
Scripts
Archivos no procesables
Autoreferencias
Postbacks
Se seleccionan los links a agregar
Existen numerosas estrategias para la selección, el objetivo no es agregar la mayor cantidad de links a la base de datos sino agregar solo los links relevantes y de éstos si agregar la mayor cantidad posible, es la parte principal del crawling.
Se almacenan las referencias y se agregan los nuevos links a la cola de exploración y se vuelve a empezar.
De este proceso surge el problema de que la cantidad de links crece de manera exponencial con cada generación y la relación de links útiles sobre links agregados cae de la misma forma. Para abordar el problema se opta por una selección óptima de links a explorar, para esta selección hay varias estrategias que definen los tipos de crawlers:
* Pagerank ®(Ponderación de un página en función de los links entrantes y salientes, sistema utilizado originalmente por Google®)
Análisis semántico.
Análisis estadístico.
Restricciones de dominio de exploración.
Redes neuronales.
Algoritmos genéticos para determinar la relevancia.
Uno de los factores de críticos de un crawler es la capacidad de escalar ya que deben ser capaces de aumentar sus capacidades de procesamiento y almacenamiento a medida que su base de conocimiento empieza a crecer. Por más inteligentes y óptimos que sean sus algoritmos de selección la cantidad de páginas indexadas tenderá a infinito y cada vez crecerá más rápido.
Para resolver el tema de la escalabilidad se han planteado arquitecturas de crawling distribuido básicamente consisten en procesos (ya sea procesamiento, almacenamiento y descarga) cooperativos y distribuidos en distintas unidades de procesamiento.
Otro de los problemas que enfrentan los crawlers es la actualización de las páginas, si el contenido de una página cambia, los índices del crawler ya dejan de ser válidos hasta que se revalide esta información por esta razón el algoritmo de crawling utilizado debe contemplar el volver a visitar páginas visitadas previamente de manera óptima.