BBVA Open4u - Herramientas de extracción de datos: para principiantes y profesionales

Herramientas de extracción de datos: para principiantes y profesionales

Existen herramientas de todo tipo para la extracción de datos no estructurados de archivos no reutilizables como un PDF o páginas web de gobiernos y organizaciones. Algunas son gratuitas, otras son de pago y en otros casos se usan lenguajes como Python para hacerlo. 

BBVAOpen4U
|
11 Ene. 2016

Para trabajar con datos, lo esencial es disponer de datos. A veces esa información se encuentra estructurada y, en otras ocasiones, está desestructurada. Hoy en día existen numerosas herramientas o procesos por los cuáles un desarrollador puede extraer datos de formatos complejos como un PDF o bien de una o varias páginas web, lo que se conoce como web scraping. El objetivo es tener los datos para poder visualizar y entender.

Web scraping se podría definir como la técnica por la que un equipo de desarrolladores es capaz de rascar, escrapear o liberar datos de páginas web de gobiernos, instituciones públicas u organizaciones para acceder a datos privados o públicos que puedan ser publicados o distribuidos en formato abierto. El problema es que la mayoría de los datos de interés están en formatos no reutilizables y poco transparentes como un PDF, por ejemplo.

Para acceder y distribuir este tipo de información existe una gran cantidad de herramientas o procesos mediante el uso de lenguajes de programación. Esta es una guía de uso de los principales métodos de extracción de datos.

Herramientas de web scraping (rascado de datos)

●      Fórmula ImportHTML

Dentro de las aplicaciones de Google, el gran buscador desarrolló su propio Excel llamado Google Spreadsheet (las hojas de cálculo de Google). Esta herramienta dispone de casi todas las características de Microsoft Excel, pero además dispone de algunas funcionalidades añadidas gracias al contenido indexado en internet por el buscador: lectura de feeds RSS, cambios en páginas web o extracción de datos.

Todo esto es posible mediante el uso de fórmulas como ImportFeed, ImportHTML e ImportXML. Con la segunda de ellas, cualquier usuario puede extraer datos de tablas o listados de forma ordenada desde cualquier página web. Dependiendo de si es una tabla o una lista, el tipo de fórmula varia en uno de sus elementos. Dos ejemplos prácticos:

=ImportHTML("url página web", "table", 2)

=ImportHTML("url página web", "list", 2)

Cualquiera de estas fórmulas colocadas en la primera celda de Google Spreadsheet permite extraer la segunda tabla o lista de la url que el usuario coloque dentro de las dobles comillas. Es muy sencillo.

●      Table Capture

Table Capture es una extensión para el navegador Chrome, que proporciona a un usuario los datos de una web sin excesivos problemas. Saca la información contenida en una tabla en HTML de una página web a cualquier formato de tratamiento de datos como Google Spreadsheet, Excel o CSV. Algo similar a la fórmula ImportHTML.

●      ScraperWiki

ScraperWiki es una herramienta perfecta para la extracción de datos dispuestos en tablas en un PDF. Es tan sencillo como cargar el archivo y exportar. Si el PDF tiene varias páginas y numerosas tablas, ScraperWiki ofrece una vista previa con todas las páginas y las distintas tablas y la posibilidad de descargar los datos de forma ordenada y separada.

Con ScraperWiki también se pueden limpiar los datos antes de ser exportados a un archivo Microsoft Excel. Esto es interesante porque, al añadir esos datos limpios a una herramienta de visualización, todo es más sencillo.

●      Tabula

Tabula es una aplicación de escritorio para equipos Windows, Mac OSX y Linux, que proporciona a los desarrolladores e investigadores un método sencillo de extracción de datos desde un PDF a un archivo en formato CSV o Microsoft Excel para su modificación y visualización. Tabula es una herramienta muy utilizada en el periodismo de datos.

Los pasos a seguir para utilizar Tabula:

-       Cargar un PDF con la tabla de datos que se quiere exportar.

-       Seleccionar la tabla con toda la información.

-       Seleccionar la opción de ‘Vista previa y extracción de datos’. Tabula escrapea los datos de la tabla y ofrece al usuario una vista previa de la información extraída para su comprobación.

-       Pulsar el botón de ‘Exportar’.

-       Los datos se exportan a un archivo Microsoft Excel o bien un archivo LibreOffice si no disponemos de Microsoft Office.

Tabula es un proyecto de código abierto disponible en GitHub.

●      Import.io

Import.io es una herramienta online gratuita, aunque también dispone de una versión de pago para empresas. Facilita la extracción estructurada de datos y su descarga en formato CSV o bien generar una API con la información. Los datos de la API se actualizan a medida que la información se modifica en el entorno de origen.

Import.io dispone de una aplicación de escritorio que cualquier usuario se puede descargar en su máquina Windows, Mac OSX o Linux. En esta aplicación, Import.io ofrece varios métodos de extracción de datos muy distintos: información contenida en una url, información en lenguaje HTML o XML, imágenes, valores numéricos, mapas… De todo. 

 

Extracción de datos con Python

En BBVAOpen4U ya hemos visto qué es y cómo funciona Python para el desarrollo de proyectos digitales o el uso de librerías para visualización de datos, pero es la primera vez que se menciona una de sus funcionalidades más interesantes y profesionales: la extracción de datos no estructurados. También existen numerosas librerías en este lenguaje para el acceso a datos.

●      BeautifulSoup

BeautifulSoup es una librería en Python que sirve para la extracción sencilla de datos concretos de una página web en HTML sin excesiva programación. Es lo que técnicamente recibe el nombre de parsear HTML. Una de las ventajas de esta biblioteca en Python es que todos los documentos salientes de la extracción de datos lo hacen en UTF-8, lo cual es bastante interesante porque el problema típico de las codificaciones queda totalmente resuelto.

Otras de las características potentes de BeautifulSoup es que utiliza analizadores de Python como lxml o html5lib, que permiten rastrear páginas web con estructura de árbol. Gracias a ellos, se puede recorrer cada ‘habitación’ de una web, abrirla, extraer su información e imprimirla.

Un ejemplo, extracción de todos los links de un site como Reddit:

from bs4 import BeautifulSoup
import urllib2

redditFile = urllib2.urlopen("http://www.reddit.com")
redditHtml = redditFile.read()
redditFile.close()

soup = BeautifulSoup(redditHtml)
redditAll = soup.find_all("a")
for links in soup.find_all('a'):
    print (links.get('href'))

●      Python Mechanize

Mechanize es un navegador virtual que consigue rastrear página web con lenguaje de programación Python. Está basado en el módulo urllib.

●      Scrapy

Scrapy es un marco de desarrollo de código abierto para la extracción de datos con Python. Este framework permite a los desarrolladores la programación de arañas que sirven para rastrear y extraer información concreta de una o varias páginas web a la vez. El mecanismo que utiliza recibe el nombre de selectores, aunque también se pueden utilizar librerías en Python como BeautifulSoup o lxml.

Síguenos en @BBVAAPIMarketA

¡Suscríbete!

Recibe nuestro boletín semanal. No te pierdas nuestros trucos, consejos, artículos y los eventos más innovadores.