7.4 Resumen y referencias

Hemos aprendido técnicas para descargar información disponible en internet en varios formatos. Para el más joven de todos ellos, JSON, hemos usado el paquete rjson. Este paquete tiene dos funciones: la que hemos usado, fromJSON, para leer ficheros JSON en R (y convertirlos en listas de listas de listas…) y toJSON, para realizar el proceso inverso.

Existen otros paquetes similares en R, como RJSONIO o jsonlite muy similares a rjson. Curiosamente, los tres paquetes contienen las dos mismas funciones, fromJSON y toJSON, con pequeñas diferencias de implementación entre ellos. La mayor diferencia entre jsonlite y el resto es que su función fromJSON proporciona la opción de simplificar la lista que produce en algunos casos para construir una tabla u otras estructuras de datos cuando detecta que es posible. Esto puede ser ventajoso determinadas circunstancias.

También se pueden descargar datos de ficheros XML o HTML. Tradicionalmente, esto se hacía con el paquete XML de R, que aprovechaba el hecho de que HTML es un dialecto25 de XML. XML, sin embargo, era algo complicado. Así que con el tiempo apareció una alternativa, xml2, un tanto más amigable. En el fondo, tanto XML como xml2 son interfaces de R para una librería desarrollada en C, libxml2. El paquete que hemos usado para rascar páginas, rvest, es a su vez, una interfaz para el paquete subyacente, xml2, adaptada al web scraping.

XML y xml2 (y, como consecuencia, rvest) hacen uso de XPath, un lenguaje de consulta para documentos XML (de la misma manera que SQL es un lenguaje de consulta para datos relacionales). Es un lenguaje que pocos dominan con soltura y que, casi seguro, solo vas a necesitar esporádicamente. Es convieniente que sepas que existe y cuatro cosas básicas sobre él. Es fácil encontrar en internet ejemplos de consultas sencillas que pueden modificarse para un fin determinado. Lo más típico suele ser la extracción de valores encerrados en etiquetas div o span con determinados atributos class o id.

Finalmente, acerca de la manipulación de texto —que es un campo, por supuesto, mucho más extenso que el contexto con el que lo hemos motivado, i.e., el arreglo de datos rascados de internet— es conveniente hacer estas dos recomendaciones:

  • Aprende bien los fundamentos de las expresiones regulares. Son muy útiles y se emplean en muchos más lenguajes de programación.
  • Que aunque las funciones discutidas en este capítulo son suficientes para un uso esporádico, si vas a estar trabajando seriamente con texto, deberías familiarizarte con el paquete stringr, que contiene una selección amplia de funciones avanzadas de manipulación de texto con una interfaz homogénea y moderna.

  1. En sentido amplio, por supuesto.