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.