4. División del trabajo

En este modelo se divide el trabajo en 2 partes:

  • Consulta y guardado de página completa: el robot orquestador D se encarga de hacer las consultas en los formularios web y cuando obtiene los resultados los guarda como una página web completa en un folder de documentos que sirve un servidor web.
  • Extracción de datos y almacenamiento en base de datos: como las páginas web se están guardando en un servidor web, cualquier explorador web podrá visualizarlas como si fuera cualquier otro sitio, por lo que entonces aplicaremos nuevamente scraping a esas páginas que ahora correrán de manera local, con lo que se abrirán de inmediato y extraer sus datos va a ser más rápido.

 

La lógica de este diseño radica en los siguientes puntos:

  • La extracción de datos es más eficiente trabajando con páginas locales que en Internet porque el programa no tiene que esperar por los resultados de una consulta ni repetir intentos para leer cada uno de los campos a extraer.
  • Cuando descargo una página puedo identificar cual es el campo que se “pinta” en el browser como señal de éxito o de falta de resultados y sólo esperar en la programación por éste único elemento para dar la instrucción de guardar la página.
  • Si se cuenta con buen ancho de banda y varias computadoras aunque tengan poca capacidad de procesamiento este modelo es el más adecuado porque puedo tener a una(s) descargando y otra(s) extrayendo datos, y entre todas esas instancias el trabajo se hará en menor tiempo.
  • Si decido primero solo descargar puedo observar todos los posibles escenarios de resultados, por ejemplo: campos que solo se visualizan para ciertos valores y para otros no, podría identificar cuáles registros llevaron a una pantalla de error o de ausencia de datos sólo con el tamaño de las páginas HTML descargadas y descartarlos de una vez para no procesarlos.

La cantidad de descargadores debe ser congruente con nuestro ancho de banda; si usamos pocos podemos estar subutilizando los recursos, y si usamos demasiados habrá lucha por el recurso y tendremos a descargadores en “espera”. Hay que encontrar el balance, según el tamaño de los recursos que estemos descargando, el ancho de banda y la capacidad de procesamiento.

 

Para aplicar este modelo es indispensable utilizar un motor de base de datos multiusuario (como mssql, mysql o postgresql), pues éstos están hechos para controlar correctamente la concurrencia, dado que si pretendemos usar un archivo como un CSV o un archivo Excel habrá conflicto a la hora de que dos o más programas intenten escribir al mismo tiempo.