datamedios es un paquete de R diseñado para facilitar la extracción automatizada de noticias desde medios de comunicación chilenos, haciendo web scraping de medios chilenos. Este paquete permite realizar búsquedas de noticias y filtrarlas por rangos de fechas, entregando los resultados en un formato estructurado y listo para su análisis. Además, incluye funcionalidades para almacenar los datos extraídos en una base de datos de manera opcional (documentación completa).
🔧 Instalación
Para instalarlo desde CRAN:
Instala datamedios desde CRAN:
install.packages("datamedios")
library(datamedios)Alternativamente, para instalar el paquete desde GitHub, sigue los siguientes pasos:
-
Asegúrate de tener instalado el paquete
devtools. Si no lo tienes, instálalo ejecutando:install.packages("devtools") -
Instala
datamediosdesde el repositorio de GitHub:devtools::install_github("exetrujillo/datamedios")
🔄 Uso
Función principal: extraer_noticias_fecha
Esta función permite filtrar noticias por un rango de fechas específico, además de aplicar una frase de búsqueda.
Parámetros:
-
search_query: Frase de búsqueda (obligatorio excepto para Ciper). -
fecha_inicio: Fecha de inicio en formato"YYYY-MM-DD"(obligatorio). -
fecha_fin: Fecha de fin en formato"YYYY-MM-DD"(obligatorio). -
subir_a_bd: Por defecto está seteado en TRUE, para los tests lo dejamos en FALSE (opcional). -
fuentes:Es un string con las fuentes a extraer. Puede ser:-
"todas": Todas las fuentes disponibles. -
"bbcl": BíoBío como única fuente -
"emol-todas": Búsqueda simultánea en las fuentes “emol”, “guioteca” y “mediosregionales”. -
"emol": Noticias no pagas de El Mercurio. -
"mediosregionales": Noticias de los diarios regionales propiedad de El Mercurio. -
"guioteca": Guías especializadas de Emol. -
"ciper": Publicaciones de Ciper Chile. -
O una combinación, solo separando medios por comas, por ejemplo:
fuentes = "mediosregionales, bbcl".
-
Valor devuelto:
Un data.frame con las siguientes columnas:
-
ID: Identificador de la noticia. -
titulo: Título de la noticia. -
contenido: Contenido completo. -
contenido limpio: Resumen o extracto. -
url: Enlace a la noticia. -
url_imagen: Url con la imagen principal de la noticia. -
autor: Autor de la noticia. -
fecha: Fecha de publicación (formato ‘YYYY-MM-DD’). -
resumen: Resumen de la IA o bajada de la nota, según disponibilidad. -
search_query: Palabra o frase de búsqueda por la que se obtuvo los datos. -
medio: Medio al que corresponde la noticia. -
temas: Categorías de la noticia.
Ejemplo de uso:
# Buscar noticias entre el 18 de octubre de 2019 al 18 de octubre de 2020
noticias <- extraer_noticias_fecha("estallido social", "2019-10-18", "2020-10-18", fuentes = "bbcl, emol, mediosregionales")Función secundaria: extraer_noticias_max_res
Esta función permite obtener noticias desde medios chilenos utilizando una frase de búsqueda. Además, puedes limitar el número de resultados a extraer.
Parámetros:
-
search_query: Frase de búsqueda (obligatorio excepto para Ciper). -
max_results: Máximo número de resultados a extraer (opcional). -
subir_a_bd: Por defecto está seteado en TRUE, pero para los tests lo dejamos en FALSE (opcional). -
fuentes:Es un string con las fuentes a extraer. Funciona de la misma forma que en extraer_noticias_fecha. Por defecto extrae de todas las fuentes (opcional).
Ejemplo de uso:
# Buscar noticias relacionadas con "inteligencia artificial"
noticias <- extraer_noticias_max_res("inteligencia artificial", max_results = 100, fuentes= "bbcl")🔖 Documentación
Adicionalmente, el paquete incluye funciones de limpieza, manejo y visualización de las noticias extraídas. Para visitar la documentación de todos los códigos haga click aquí.
📊 Dependencias
Este paquete utiliza las siguientes dependencias de R para su correcto funcionamiento:
dplyr: Manipulación y análisis de datos.httr: Realización de solicitudes HTTP para interactuar con APIs.magrittr: Uso de operadores como%>%para flujos de trabajo más legibles.jsonlite: Procesamiento y conversión de datos en formato JSON.utils: Funciones utilitarias básicas incluidas en R.rlang: Herramientas para manipulación de expresiones.wordcloud2: Generación de nubes de palabras interactivas.tidytext: Análisis de texto basado en datos ordenados.lubridate: Manejo y análisis de datos temporales.rvest: Web scraping de páginas HTML.stringr: Manejo y manipulación de cadenas de texto.xml2: Lectura y manejo de datos en formato XML.purrr: Programación funcional con listas y vectores.DT: Generación de tablas interactivas en HTML desde R.ggplot2: Creación de gráficos sofisticados y personalizados basados en la gramática de los gráficos.plotly: Creación de gráficos interactivos y visualizaciones dinámicas.parallel: Ejecución paralela multinucleo.pbapply: Barra de progreso.
👤 Autoría
Este paquete fue desarrollado por:
- Exequiel Trujillo (contacto: exequiel.trujillo@ug.uchile.cl)
- Ismael Aguayo (contacto: ismael.aguayo@ug.uchile.cl)
- Klaus Lehmann (contacto: klehmann@fen.uchile.cl)
Contribuciones adicionales de:
- Matias Gallardo (contacto: matias.gallardo.v@ug.uchile.cl)