El raspado de datos es una técnica mediante la cual un programa informático extrae datos de una salida legible por humanos que proviene de otro programa.
Normalmente, la transferencia de datos entre programas se lleva a cabo utilizando estructuras de datos adecuadas para el procesamiento automático por parte de computadoras , no de personas. Estos formatos y protocolos de intercambio suelen estar estructurados de forma rígida, bien documentados, son fáciles de analizar y minimizan la ambigüedad. Muy a menudo, estas transmisiones no son legibles para los humanos.
Por lo tanto, el elemento clave que distingue el raspado de datos del análisis sintáctico normal es que el resultado que se raspa está destinado a ser mostrado a un usuario final , en lugar de ser una entrada para otro programa. Por lo tanto, generalmente no está documentado ni estructurado para un análisis sintáctico conveniente. El raspado de datos a menudo implica ignorar datos binarios (generalmente imágenes o datos multimedia), formato de visualización , etiquetas redundantes, comentarios superfluos y otra información que es irrelevante o dificulta el procesamiento automatizado.
La extracción de datos se realiza con mayor frecuencia para interactuar con un sistema heredado , que no tiene ningún otro mecanismo compatible con el hardware actual , o para interactuar con un sistema de terceros que no proporciona una API más conveniente . En el segundo caso, el operador del sistema de terceros a menudo considerará que la extracción de datos de pantalla es indeseable, debido a razones como el aumento de la carga del sistema , la pérdida de ingresos por publicidad o la pérdida de control del contenido de la información.
El raspado de datos generalmente se considera una técnica ad hoc , poco elegante, que a menudo se utiliza solo como "último recurso" cuando no hay otro mecanismo disponible para el intercambio de datos. Además de la mayor carga de programación y procesamiento, las pantallas de salida destinadas al consumo humano a menudo cambian de estructura con frecuencia. Los humanos pueden lidiar con esto fácilmente, pero un programa de computadora fallará. Dependiendo de la calidad y el alcance de la lógica de manejo de errores presente en la computadora , esta falla puede resultar en mensajes de error, salida corrupta o incluso fallas del programa .
Sin embargo, hoy en día, configurar un proceso de extracción de datos es sencillo y requiere un esfuerzo de programación mínimo para satisfacer las necesidades prácticas (especialmente en la integración de datos biomédicos). [1]
Aunque el uso de las " terminales tontas " físicas IBM 3270 está disminuyendo lentamente, a medida que más y más aplicaciones mainframe adquieren interfaces web , algunas aplicaciones web simplemente continúan usando la técnica de raspado de pantalla para capturar pantallas antiguas y transferir los datos a front-ends modernos. [2]
El raspado de pantalla normalmente se asocia con la recopilación programática de datos visuales de una fuente, en lugar de analizar datos como en el raspado web. Originalmente, el raspado de pantalla se refería a la práctica de leer datos de texto de la pantalla de un terminal de computadora . Esto generalmente se hacía leyendo la memoria del terminal a través de su puerto auxiliar o conectando el puerto de salida del terminal de un sistema informático a un puerto de entrada en otro. El término raspado de pantalla también se usa comúnmente para referirse al intercambio bidireccional de datos. Estos podrían ser los casos simples donde el programa de control navega a través de la interfaz de usuario o escenarios más complejos donde el programa de control ingresa datos en una interfaz destinada a ser utilizada por un humano.
Como ejemplo concreto de un raspador de pantalla clásico, considere un sistema heredado hipotético que data de la década de 1960, el amanecer del procesamiento de datos computarizado . Las interfaces de computadora a usuario de esa época a menudo eran simplemente terminales tontas basadas en texto que no eran mucho más que teleimpresoras virtuales (tales sistemas todavía se usan hoy en día [actualizar], por varias razones). El deseo de interconectar un sistema de este tipo con sistemas más modernos es común. Una solución robusta a menudo requerirá cosas que ya no están disponibles, como código fuente , documentación del sistema , API o programadores con experiencia en un sistema informático de 50 años. En tales casos, la única solución factible puede ser escribir un raspador de pantalla que "simule" ser un usuario en una terminal. El raspador de pantalla podría conectarse al sistema heredado a través de Telnet , emular las pulsaciones de teclas necesarias para navegar por la antigua interfaz de usuario, procesar la salida de pantalla resultante, extraer los datos deseados y pasarlos al sistema moderno. Una implementación sofisticada y resistente de este tipo, construida sobre una plataforma que proporciona la gobernanza y el control requeridos por una gran empresa (por ejemplo, control de cambios, seguridad, gestión de usuarios, protección de datos, auditoría operativa, equilibrio de carga y gestión de colas, etc.) podría decirse que es un ejemplo de software de automatización de procesos robóticos , llamado RPA o RPAAI para RPA 2.0 autoguiado basado en inteligencia artificial .
En la década de 1980, los proveedores de datos financieros como Reuters , Telerate y Quotron mostraban datos en formato 24×80 destinado a un lector humano. Los usuarios de estos datos, en particular los bancos de inversión , escribieron aplicaciones para capturar y convertir estos datos de caracteres en datos numéricos para su inclusión en cálculos para decisiones comerciales sin tener que volver a ingresar los datos. El término común para esta práctica, especialmente en el Reino Unido , era destrucción de páginas , ya que se podía imaginar que los resultados habían pasado por una trituradora de papel . Internamente, Reuters utilizó el término "logicizado" para este proceso de conversión, ejecutando un sofisticado sistema informático en VAX/VMS llamado Logicizer. [3]
Las técnicas más modernas de captura de pantalla incluyen la captura de datos de mapa de bits de la pantalla y su ejecución a través de un motor de OCR , o para algunos sistemas de prueba automatizados especializados, la comparación de los datos de mapa de bits de la pantalla con los resultados esperados. [4] Esto se puede combinar en el caso de aplicaciones GUI , con la consulta de los controles gráficos mediante la obtención programática de referencias a sus objetos de programación subyacentes . Una secuencia de pantallas se captura automáticamente y se convierte en una base de datos.
Otra adaptación moderna a estas técnicas es utilizar, en lugar de una secuencia de pantallas como entrada, un conjunto de imágenes o archivos PDF, por lo que existen algunas superposiciones con las técnicas genéricas de "extracción de documentos" y minería de informes.
Hay muchas herramientas que se pueden utilizar para el screen scraping. [5]
Las páginas web se crean utilizando lenguajes de marcado basados en texto ( HTML y XHTML ) y, con frecuencia, contienen una gran cantidad de datos útiles en formato de texto. Sin embargo, la mayoría de las páginas web están diseñadas para usuarios finales humanos y no para facilitar su uso automatizado. Debido a esto, se crearon kits de herramientas que extraen contenido web. Un raspador web es una API o herramienta para extraer datos de un sitio web. [6] Empresas como Amazon AWS y Google proporcionan herramientas, servicios y datos públicos de raspado web disponibles de forma gratuita para los usuarios finales. Las formas más nuevas de raspado web implican escuchar las fuentes de datos de los servidores web. Por ejemplo, JSON se usa comúnmente como un mecanismo de almacenamiento de transporte entre el cliente y el servidor web. Un raspador web utiliza la URL de un sitio web para extraer datos y almacena estos datos para su posterior análisis. Este método de raspado web permite la extracción de datos de manera eficiente y precisa. [7]
Recientemente, las empresas han desarrollado sistemas de web scraping que se basan en el uso de técnicas de análisis DOM, visión artificial y procesamiento del lenguaje natural para simular el procesamiento humano que ocurre al visualizar una página web para extraer automáticamente información útil. [8] [9]
Los sitios web de gran tamaño suelen utilizar algoritmos defensivos para proteger sus datos de los web scrapers y limitar la cantidad de solicitudes que una IP o red IP puede enviar. Esto ha provocado una batalla continua entre los desarrolladores de sitios web y los desarrolladores de scrapers. [10]
La minería de informes es la extracción de datos de informes informáticos legibles por humanos. La extracción de datos convencional requiere una conexión a un sistema fuente en funcionamiento, estándares de conectividad adecuados o una API y, por lo general, consultas complejas. Al utilizar las opciones de informes estándar del sistema fuente y dirigir la salida a un archivo de spool en lugar de a una impresora , se pueden generar informes estáticos adecuados para el análisis fuera de línea a través de la minería de informes. [11] Este enfoque puede evitar el uso intensivo de la CPU durante el horario comercial, puede minimizar los costos de licencia de usuario final para los clientes de ERP y puede ofrecer un desarrollo y creación de prototipos muy rápidos de informes personalizados. Mientras que el raspado de datos y el raspado web implican la interacción con la salida dinámica, la minería de informes implica la extracción de datos de archivos en un formato legible por humanos, como HTML , PDF o texto. Estos se pueden generar fácilmente desde casi cualquier sistema interceptando la alimentación de datos a una impresora. Este enfoque puede proporcionar una ruta rápida y sencilla para obtener datos sin la necesidad de programar una API para el sistema fuente.
Consideraciones legales y éticas
La legalidad y la ética de la extracción de datos son temas que suelen ser motivo de debate. La extracción de datos de acceso público suele ser legal, pero hacerlo de forma que infrinja los términos de servicio de un sitio web, infrinja las medidas de seguridad o invada la privacidad del usuario puede dar lugar a acciones legales. Además, algunos sitios web prohíben específicamente la extracción de datos en sus archivos robots.
12. Inicio de sesión múltiple. (sin fecha). Inicio de sesión múltiple | Evita el bloqueo de cuentas y permite el escalado. https://multilogin.com/blog/how-to-scrape-data-on-google/
13. Mitchell, R. (2022). "La ética de la extracción de datos". Journal of Information Ethics, 31(2), 45-61.
14. Kavanagh, D. (2021). "Navegadores antidetección: la próxima frontera en el web scraping". Web Security Review, 19(4), 33-48.
15. Walker, J. (2020). "Implicaciones legales del raspado de datos". Tech Law Journal, 22(3), 109-126.