Big Data, Web Scraping y Data Mining
Big Data, Web Scraping y Data Mining
Web Scraping
y Data Mining
https://www8.cao.go.jp/cstp/english/society5_0/index.html
https://resources.moredirect.com/white-papers/idc-report-the-digitization-of-the-world-from-edge-to-core
https://www.elderresearch.com/blog/the-42-vs-of-big-data-and-data-science/
Laney, D. (2001) “3D data management: Controlling data volumen, variety and velocity”.
https://www.elderresearch.com/blog/the-42-vs-of-big-data-and-data-science/
Laney, D. (2001) “3D data management: Controlling data volumen, variety and velocity”.
• “Los datos abiertos son datos que pueden ser utilizados, reutilizados y redistribuidos
libremente por cualquier persona, y que se encuentran sujetos, cuando más, al
requerimiento de atribución y de compartirse de la misma manera en que
aparecen.”
Los datos abiertos son un gran recurso, en parte, aún sin explotar. Muchos individuos, y
en especial organizaciones, recogen una amplia gama de datos con el fin de realizar
sus tareas. La aplicación de restricciones de copyright, licencias y/o patentes sobre
todos estos datos va en contra del bien común de la sociedad. Es por este motivo, que
estos datos deben ser “abiertos” sin restricciones.
Reutilización y distribución
• Se debe permitir la reutilización y redistribución del conjunto de datos.
• Facilidad de integración con otras fuentes de datos.
Universalidad
• Los datos pueden ser utilizados, reutilizados y distribuidos por todos, sin
restricciones de ningún tipo.
Ejemplo: ¿dos conjuntos de datos que manejan la entidad municipio pero que los
identifican con códigos diferentes podrán interoperar?
★ ★ ★ ★ ★ Los dos últimos niveles añaden integración con la web y datos enlazados
con otros datos.
5 ★ Open Data
https://5stardata.info/en/
• Kaggle: https://www.kaggle.com/datasets
• UCI: https://archive.ics.uci.edu/ml/index.php
• INE: https://www.ine.es/prodyser/microdatos.htm
• Datos Abiertos Gob. España: https://datos.gob.es/es
• Datos Abiertos Ayto. Madrid: https://datos.madrid.es/portal/site/egob
• Open Data Ayto. Barcelona: https://opendata-ajuntament.barcelona.cat/es
Historia de Python
• Creado en 1990 por Guido Van Rossum (actualmente empleado de Microsoft, ex-
Google).
• A partir del año 2011 pasa a ser administrado por Python Software Foundation, una
compañía sin ánimo de lucro con un funcionamiento similar al de Apache Software
Foundation.
https://www.python.org/
• Open Source es aquel software que tiene tanto el código fuente como los derechos
sin ninguna restricción.
– Cualquiera puede acceder al código fuente y modificarlo si lo desea (para su propio uso)
– El uso no está restringido para ningún uso y/o usuario.
“With software there are only two possibilites: either the users control the programme or
the programme controls the users.” Richard Stallman
Ventajas de Python
• Python es un lenguaje de alto nivel multipropósito: análisis de datos, desarrollo web,
scripting, web scraping …
• Es muy fácil de aprender para los principiantes: curva de aprendizaje menos dura.
• Más rápido en el manejo de grandes conjuntos de datos y puede cargar los archivos
con facilidad.
Versiones de Python
• Python 2.x (actualmente 2.7):
– Última versión legacy publicada a mediados de 2010.
– No recibe actualizaciones importantes del core (solo
disponibles en Python 3.x).
– Ampliamente utilizada por la comunidad.
– Ampliamente soportada por los proveedores de
software.
IDE
• Existen muchos IDEs (Integrated Development Enviroment) para Python.
• Cada uno de ellos está diseñado para dar soporte a una forma de trabajo en
función del dominio (análisis de datos, desarrollo general, programación
reproducible…) al que se orienten.
• Permite combinar “celdas” de código con texto enriquecido (HTML, imágenes, gráficos,
etc.).
IDE – Spyder
• Editor completo de Python orientado a la programación científica / interactive (similar a R
Studio o Matlab).
Anaconda
• Se trata de la distribución de Python más extendida y reconocida de las existentes.
• Incluye una consola (gráfica) para Python, iPython, Jupyer Notebooks y Spyder
www.anaconda.com
pip
• El instalador de Python instala pip automáticamente, por lo que no hay que instalar
nada más para usarlo.
https://pypi.org/
conda
Pandas
• Pandas es un módulo de Python, de alto rendimiento, orientado al análisis
de datos.
https://pandas.pydata.org/
Pandas
Características principales:
Referencias
Notebook inicial
Python_Introduccion.ipynb
Términos legales
https://www.idealista.com/ayuda/articulos/terminos-y-condiciones-generales-de-idealista/
Términos legales
https://www.idealista.com/ayuda/articulos/terminos-y-condiciones-generales-de-idealista/
Términos legales
https://www.idealista.com/ayuda/articulos/terminos-y-condiciones-generales-de-idealista/
Términos legales
https://www.idealista.com/ayuda/articulos/terminos-y-condiciones-generales-de-idealista/
Programación web
¿Qué es la web?
• Servidores web: son máquinas/ordenadores conectados a Internet, los cuales
sirven/envían a los clientes documentos/páginas web. Los servidores web pueden
ejecutarse también en local (lo cual quiere decir que se ejecutan en la máquina
actual en la que estás trabajando).
• Clientes web: son programas (también conocidos como navegadores web) que
hacen peticiones (requests) a los servidores web. Ejemplos de clientes web: Internet
Explorer, Edge, Firefox, Chrome, Safari, …
• Cada página web puede ser identificada por una dirección URL(Uniform Resource
Locator) o URI (Uniform Resourse Identifier). Parte de una URL:
https://www.afi.es/webAfi/secciones/1131348/1131413/Contactanos.html
– Protocolo: indicador del protocolo de comunicaciones. Por ejemplo: HTTP o HTTPS.
– Dominio: el dominio donde se encuentra almacenado el recurso.
– Información adicional: como el path del recurso solicitado, parámetros, etc.
Programación web
Funcionamiento de la web
1. Usuario escribe en el navegador la URL solicitada.
2. El navegador resuelve la dirección del dominio y realiza una petición HTTP al servidor
web.
3. El servidor web (utilizando los parámetros de la llamadas si los hubiera)
localiza/genera el recurso HTML solicitado y lo devuelve al navegador.
4. El navegador tras recibir el HTML, extrae referencias a otros ficheros como hojas de
estilo CSS (Cascading Style Sheets), imágenes, ficheros JavaScript, etc. y vuelve a
pedir cada fichero al servidor web.
5. El servidor web devuelve cada uno de los ficheros anteriores.
6. Finalmente el navegador muestra (render) el contenido HTML por pantalla. Este
proceso incluye:
– a) Analizar el contenido HTML y extraer el contenido/estructura de la página.
– b) A partir de la hoja de estilos CSS modifica la apariencia (colores, fuentes, márgenes, etc.) a aquellos
elementos que sea necesario.
– c) Incluir imágenes en el contenido HTML.
– d) Ejecutar JavaScript, lo que permite alterar el comportamiento de la página HTML.
Programación web
HTML (Hypertext Markup Language)
• Lenguaje de marcas empleado para estructurar el contenido de las páginas web.
Programación web
HTML: elementos (contenido + estructura)
• Dentro de un documento HTML encontraremos contenido y estructura. A través del
lenguaje HTML podremos estructurar el propio contenido.
• Las etiquetas se anidan para generar la jerarquía del documento en forma de árbol
– DOM (Document Objet Model). Es importante asegurar que la apertura y cierre
de etiquetas está balanceada para construir un HTML bien formado.
Programación web
HTML: etiquetas generales
Etiqueta Descripción
html Etiqueta global que contiene el resto de etiquetas del documento.
head Contiene metadatos sobre el documento como el título, referencias a hojas de estilo y scripts.
title Etiqueta para indicar el título del documento.
body Etiqueta que contiene el contenido del documento.
h1, h2, h3, h4 Etiquetas para indicar distintos niveles de títulos o encabezados.
p Etiqueta para párrafos.
ul, li Etiqueta para listas no ordenadas (bullets).
ol, li Etiqueta para listas ordenadas.
em Etiqueta para indicar énfasis. Normalmente en cursiva.
strong Etiqueta para indicar énfasis. Normalmente en negrita.
a Etiqueta para crear enlaces.
span Etiqueta para crear contenedores de texto.
div Etiqueta para crear contenedores de elementos HTML.
img Etiqueta para insertar imágenes
Programación web
HTML: ejemplo (I)
Amazing Visualization Tool Cures All Ills A new open- source tool
designed for visualization of data turns out to have an unexpected,
positive side effect: it heals any ailments of the viewer. Leading
scientists report that the tool, called D3000, can cure even the
following symptoms: fevers chills general malaise It is achieves this
end with a patented, three-step process. Load in data. Generate a
visual representation. Activate magic healing function.
Programación web
HTML: ejemplo (II)
A new open-source tool designed for visualization of data turns out to have an
unexpected, positive side effect: it heals any ailments of the viewer. Leading scientists
report that the tool, called D3000, can cure even the following symptoms:
– fevers
– chills Lista no ordenada
– general malaise
Programación web
HTML: ejemplo (II)
<h1>Amazing Visualization Tool Cures All Ills</h1>
<p>A new open-source tool designed for visualization of data turns out to have
an unexpected, positive side effect: it heals any ailments of the viewer.
Leading scientists report that the tool, called D3000, can cure even the
following symptoms:</p>
<ul>
<li>fevers</li>
<li>chills</li>
<li>general malaise</li>
</ul>
<p>It is achieves this end with a patented, three-step process.</p>
<ol>
<li>Load in data.</li>
<li>Generate a visual representation.</li>
<li>Activate magic healing function.</li>
</ol>
Programación web
HTML: atributos
• Dentro de los elementos HTML se pueden especificar atributos. Estos atributos son
pares clave/valor. Por ejemplo:
<tagname property="value"></tagname>
• Cada elemento de HTML tiene unos atributos específicos. Por ejemplo: todos los
elemento a tienen el atributo href para indicar la URL a donde enlazan.
• Existen dos atributos especiales que pueden asignarse a cualquier elemento HTML.
Estos elementos permiten identificar y manipular elementos del documento HTML.
– class: cada elemento HTML puede tener más de una clase. Además, las clases pueden
repetirse entre elementos de la página.
– id: cada elemento HTML puede tener un único id. Además este id debe ser único entre los
elementos de la página.
Programación web
CSS: Cascading Style Sheet
• Las hojas de estilo o CSS contienen la presentación visual contenido de un
documental HTML. La versión actual es denominada CSS3.
Programación web
CSS: Selectors (I)
• Las hojas de estilo de CSS permiten identificar los elementos del documento HTML a
los que se les aplicarán los estilos. Existen gran cantidad de selectores CSS.
Programación web
CSS: Selectors (II)
• Selectores por clase (y multiclase)
.caption /* todos los elementos con la clase caption */
.label /* todos los elementos con la clase label */
.axis/* todos los elementos con la clase axis */
.bar.highlit /* todos los elementos con la clase bar y highlight */
• Selectores por ID
#header /* el elemento con id “header” */
#ttile /* el elemento con id “title” */
• Combinación de selectores
div.sidebar /* elementos de tipo div con la clase sidebar */
#ttile.in /* el elemento con id “title” y la clase on */
Programación web
CSS: properties
• Las propiedades definen la apariencia que tendrá cada elemento del documento
HTML. Existen gran cantidad de propiedades CSS.
margin: 10px;
padding: 25px;
background-color: #C00;
font-family: Arial;
• Nota: puedes definir colores por nombre (black), valores hexadecimales (#000000 o
#000), valores RGB (rgb(0, 0, 0)) y valores RGB con transparencia (rgba(0, 0, 0, 0.5)).
– HEX to RGB: http://hex.colorrrs.com/
– Variaciones de un color: http://www.0to255.com/
Programación web
CSS: ¿Cómo inscribir el CSS al HTML?
• Existen tres maneras de incluir el CSS a una página o documento HTML.
Programación web
CSS: ¿Cómo inscribir el CSS al HTML?
• Existen tres maneras de incluir el CSS a una página o documento HTML.
2. A través de una referencia (etiqueta link) a un fichero CSS externo (.css) dentro del HTML.
<html>
<head>
<link rel=”stylesheet” href=“style.css”>
</head>
…
</html>
3. Incluyendo la regla CSS directamente dentro del elemento HTML. Para ellos se emplea el
atributo style que tiene todos los elementos HTML. En este caso particular no se hace uso de
selectores, puesto que los estilos se aplican directamente al elemento.
Programación web
Javascript
• Lenguajes de scripting para hacer páginas web dinámicas. Mediante Javascript
podemos manipular el DOM después de que una página ha sido cargada en el
navegador.
• El código JavaScript de una página puede estar contenido dentro del propio HTML
entre las etiquetas <script>…</script>.
<body>
<script type="text/javascript">
alert("D3.js is awesome");
</script>
</body>
• Crawler: programa que recorre una web leyendo la información de todas su páginas.
Para ello normalmente se hace crawling vertical y horizontal.
• Endpoint: cada función o recurso de la API tiene una URL diferente, que empieza
siempre por la URL base. Cada una de estas funciones o recursos se le conoce con el
nombre de endpoint. La documentación oficial de la API tiene información sobre los
diferentes endpoints.
• Responses: información devuelta por el servidor. Incluye los datos, cabeceras, código
de retorno, etc.
• HTTP methods: también llamados verbos, especifican la acción que se desea realizar.
Algunos ejemplos: POST (crear), GET (leer), PUT (actualizar), DELETE (borrar). Normalmente
usaremos POST y GET para obtener los datos.
• Paginación: en muchas ocasiones las API devuelven gran cantidad de datos. En estas
ocasiones se parten los datos en porciones más pequeñas de tal modo que el servidor
los puede servir de manera óptima. Se usan parámetros para establecer: resultados por
página, número de página y número total de resultados.
• Rate limit: límite de peticiones (requests) que puede realizar un usuario en un periodo de
tiempo. Por ejemplo: peticiones por segundo, peticiones al mes, etc. De este modo se
controla el uso de la API, impidiendo a los usuarios hacer un mal uso de la misma.
Formato XML
• XML (eXtensible Markup Languaje) es un lenguaje de marcas empleado para
almacenar datos de forma legible. Tiene una estructura jerárquica.
• Similar a HTML.
• Sirve para intercambio de información.
• Partes del documento XML:
– Declaración: donde se establece la versión y la codificación del documento. También es
posible declarar el tipo de documento (DTD y XML Schema).
– Tags: aparecen entre los símbolos < y >.
o start-tags: <section>
o end-tags: </section>
o empty-element-tags: <section/>
– Elementos: componentes del documento XML. Comienzan por un start-tag y terminan por un
end-tag. Entre los tags aparece el contenido del elemento (puede contener otros elementos a
su vez).
– Atributos: características o propiedades de los elementos (pares clave/valor). Los valores van
entrecomillados (con comillas dobles).
Formato JSON
• JSON (JavaScript Object Notation) es un formato de intercambio de datos.
• Alternativa a XML gracias a su perfecta integración con JavaScript.
• Muy empleado en el desarrollo de páginas web dinámicas o SPAs (Single Page
Applications).
• Normalmente los documentos JSON se codifican en UTF-8. Aunque también se puede
emplear UTF-16 y UTF-32.
• Tipos básicos en JSON:
– Números: usando punto como separador decimal.
– Cadenas (String): entrecomilladas con comillas dobles.
– Boolean: true o false.
– Array: entre corchetes y con los valores separados por comas.
– null: para representar el valor nulo.
– Objetos: colecciones de pares clave/valor, separados por comas y entre llaves.
XML vs JSON
• Muchas web APIs cuentan con paquetes desarrollados en R y/o Python que hacen que
su uso sea mucho más sencillo, simplificando enormemente el proceso. Lo primero que
tendremos que hacer antes de comenzar a codificar es buscar si existe un paquete
propio que podamos usar.
• Material extra:
• https://www.analyticsvidhya.com/blog/2021/0
7/learn-data-scraping-using-python-and-
selenium/
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
• La minería de datos fuera del KDD, es decir, aplicar a ciegas métodos de minería de
datos se considera: Data dredging (dragado de datos). Esto puede ser peligroso y
conducir a conclusiones erróneas.
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
2. Comprensión y preparación de
los datos.
3. Preprocesamiento y limpieza de
datos.
5. Interpretación/Evaluación.
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
Fayyad, U; Piatetsky-Shapir, G. & Smyth, P. (1997) From Data Mining to Knowledge Discovery in Databases.
Programación en Python