Calidad de datos y Web Scraping.

¿Por qué es necesario hacer web scraping?

En internet existe contenido que puede ser de interés recuperar, almacenar y analizar con el objetivo de descubrir nueva información, hacerla más entendible al usuario o otorgarle una nueva interpretación. Es cierto que algunas páginas web ofrecen la posibilidad de acceder y descargar información de forma estructurada, a través de API o Web Service pero no toda la información disponible en internet puede descargarse a través de las mismas.

Cuando el propietario de una página web no pone a disposición de ninguna herramienta, el web scraping aparece como una alternativa para la extracción de información.

Así, el web scraping consiste en la construcción de un agente que permita descargar, analizar y organizar datos procedentes de internet, de forma automática. Gracias al uso de esta técnica, podemos diseñar un script que desarrolle una serie de tareas repetitivas con las que almacenar información de interés de forma estructurada y mucho más eficiente que si se realizara manualmente, acelerando el proceso y evitando errores producidos en el proceso de copiar/pegar.

¿Por qué es útil mirar el mapa del sitio web?

El mapa nos ayudará a localizar el contenido actualizado sin la necesidad de rastrear cada una de las páginas que lo componen. La principal ventaja de los sitemaps es que permiten a los motores de búsqueda,como Google o Bing, rastrear más fácilmente el sitio web.

Aunque estos buscadores suelen indexar correctamente cualquier página web pequeña o mediana adecuadamente diseñada, rastrear aquellos sitios de mayor tamaño presentará ciertas complejidades, principalmente cuando se actualicen con frecuencia.

Asimismo, el sitemap puede permitir a los usuarios navegar más cómodamente por el sitio.

Como evitar saturar el servidor con peticiones web

Para evitar saturar un servidor con peticiones se pueden introducir retardos exponenciales entre peticiones consecutivas cuando se detecta algún error en la página. En lugar de reenviar una misma petición de forma prácticamente instantánea,añadir un retraso exponencialmente creciente entre peticiones proporciona al servidor web la oportunidad de recuperarse.

Otro método ampliamente utilizado consiste en calcular el tiempo que toman en completarse las diferentes peticiones para, a continuación, añadir un retardo proporcional al tiempo estimado. De este modo, si el sitio empieza a ralentizarse y las peticiones realizadas toman más tiempo en recibir una respuesta,se puede ajustar el tiempo de espera entre peticiones de forma automática.

Diferentes factores que influyen en la calidad de los datos.

  • Exactitud: Define el grado en que los datos describen correctamente el objeto oevento del "mundo real".

    Ejemplo: Mi caso es un problemas real obtenido del medio de comunicación El país . En el se expone el problema de la NASA al programar la Mars Climate Orbiter. Según informó la organización americana, la nave estalló debido a una confusión entre millas y kilómetros. La sonda, construida para navegar según el sistema inglés, recibió antes del despegue las instrucciones de vuelo en el sistema métrico decimal. Los datos pasaron la fase de validación del sistema ya que los valores se mantenían dentro del rango, pero no eran exactos.
  • Completitud: Se define como la proporción de datos almacenados frente al potencial "100%completo".

    Ejemplo: Porcentaje de clientes con el NIF/CIF rellenado en la base de datos de una compañía eléctrica.
  • Consistencia: Es la ausencia de diferencia, al comparar dos o más representaciones de una cosa con su definición.

    Ejemplo: La calificación de personas jurídicas o persona física de una póliza almacenada en un ERP. Si la póliza tiene almacenado un CIF, es una empresa y si la póliza tiene almacenado un DNI o NIE es una persona física.
  • Puntualidad: Se define la puntualidad (o atemporalidad) como el grado en que los datos representan la realidad desde un punto requerido en el tiempo.

    Ejemplo: La fecha de alta o baja de un contrato es un punto requerido en el tiempo.
  • Unicidad: Nos asegura que nada se registra más de una vez.

    Ejemplo: No existan dos pólizas con el mismo número de identificación y el mismo cliente.
  • Validez: Se define como el ajuste a la sintaxis predefinida (formato, tipo, rango).

    Ejemplo: Selector para la introducción de un país. Es decir, un usuario de una aplicación tiene que escoger que país le representa de acuerdo a un listado.

¿Qué tipos de base de datos no es necesario conocer a priori los datos que se quieren almacenar? Tres ejemplos de estas bases de datos.

Bases de datos no relacionales: son un tipo de base de datos que se implementa cuando la información a almacenar es muy compleja para poder ser expresada en una tabla. A diferencia de las bases de datos relacionales, no es necesario conocer a priori qué es lo que se desea almacenar, ya que las bases de datos no relacionales son más flexibles y pueden almacenar cualquier tipo de dato sin importar su estructura. En ellas, no se tiene un identificador que sirva almacenar, por lo que se utilizan datos del tipo JSON.

Tres ejemplos son:
  • MongoDB es un sistema de base de datos NoSQL orientado a documentos de código abierto. En lugar de guardar los datos en tablas, tal y como se hace en las bases de datos relacionales, MongoDB guarda estructuras de datos BSON (una especificación similar a JSON) con un esquema dinámico, haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.

    El código fuente está disponible para los sistemas operativos Windows, GNU/Linux, OS X y Solaris.
  • Neo4j es un software libre de Base de datos orientada a grafos, implementado en Java. Los desarrolladores describen a Neo4j como un motor de persistencia embebido, basado en disco, implementado en Java, completamente transaccional, que almacena datos estructurados en grafos en lugar de en tablas. La base de datos está licenciada en un modelo dual, tanto bajo Affero General Public License (AGPL) v3 como bajo licencia comercial.
  • Apache Cassandra es una base de datos NoSQL distribuida y basada en un modelo de almacenamiento de «clave-valor», de código abierto que está escrita en Java. Permite grandes volúmenes de datos en forma distribuida. Su objetivo principal es la escalabilidad lineal y la disponibilidad. La arquitectura distribuida de Cassandra está basada en una serie de nodos iguales que se comunican con un protocolo P2P con lo que la redundancia es máxima. Está desarrollada por Apache Software Foundation.

    El modelo de datos de Cassandra consiste en particionar las filas, que son reorganizadas en tablas. Las claves primarias de cada tabla tiene un primer componente que es la clave de partición. Dentro de una partición, las filas son agrupadas por las columnas restantes de la clave. Las demás columnas pueden ser indexadas por separado de la clave primaria.

    Las tablas se pueden crear, eliminar y alterar en tiempo de ejecución sin bloquear actualizaciones y consultas.