Type: Package
Title: Scraping Chilean Media
Version: 1.2.2
Maintainer: Exequiel Trujillo <exequiel.trujillo@ug.uchile.cl>
Description: A system for extracting news from Chilean media, specifically through Web Scapping from Chilean media. The package allows for news searches using search phrases and date filters, and returns the results in a structured format, ready for analysis. Additionally, it includes functions to clean the extracted data, visualize it, and store it in databases. All of this can be done automatically, facilitating the collection and analysis of relevant information from Chilean media.
License: MIT + file LICENSE
Encoding: UTF-8
Language: es-ES
Depends: R (≥ 4.1)
Suggests: rcmdcheck
Imports: dplyr, httr, magrittr, jsonlite, utils, rlang, wordcloud2, tidytext, lubridate, rvest, stringr, xml2, purrr, DT, ggplot2, plotly
RoxygenNote: 7.3.2
NeedsCompilation: no
Packaged: 2025-06-23 03:16:56 UTC; ismae
Author: Exequiel Trujillo [aut, cre, cph, fnd], Ismael Aguayo [aut, fnd], Klaus Lehmann [aut, fnd]
Repository: CRAN
Date/Publication: 2025-06-23 03:30:02 UTC

Pipe operator

Description

See magrittr::%>% for details.

Usage

lhs %>% rhs

Agregar datos unicos a una tabla MySQL

Description

Esta funcion agrega datos a una tabla MySQL utilizando endpoints que esperan datos en formato JSON.

Usage

agregar_datos_unicos(data)

Arguments

data

Un data frame con los datos a insertar.

Value

No retorna ningun valor.

Examples

## Not run: 
# Agregar datos unicos
noticias <- extraer_noticias_max_res("tesla", max_results=10, fuentes="bbcl", subir_a_bd = FALSE)
agregar_datos_unicos(noticias)

## End(Not run)

Extraer parrafos de una columna de texto

Description

Esta funcion procesa una columna de texto en un dataframe y extrae los parrafos que coinciden con los sinonimos proporcionados.

Usage

extraccion_parrafos(datos, sinonimos = c())

Arguments

datos

Data frame que contiene los datos de entrada con la columna "contenido".

sinonimos

Vector de sinonimos que se incluiran en la busqueda.

Value

Data frame con una columna adicional 'parrafos_filtrados' que contiene los parrafos extraidos como listas.

Examples


datos <- extraer_noticias_max_res("inteligencia artificial", max_results = 140, subir_a_bd = FALSE)
datos <- extraccion_parrafos(datos, sinonimos = c("IA", "AI"))


Extraccion de noticias de medios chilenos por rango de fechas

Description

Esta funcion permite realizar una extraccion automatizada de noticias de BioBio o Los medios de Emol, utilizando un rango de fechas.

Usage

extraer_noticias_fecha(
  search_query,
  fecha_inicio,
  fecha_fin,
  subir_a_bd = TRUE,
  fuentes = "todas"
)

Arguments

search_query

Una frase de busqueda (obligatoria).

fecha_inicio

Fecha de inicio del rango de busqueda en formato "YYYY-MM-DD" (obligatoria).

fecha_fin

Fecha de fin del rango de busqueda en formato "YYYY-MM-DD" (obligatoria).

subir_a_bd

por defecto TRUE, FALSE para test y cosas por el estilo (opcional).

fuentes

es un string con las fuentes a extraer. Puede ser bbcl o las de emol.

Value

Un dataframe con las noticias extraidas.

Examples

## Not run: 
noticias <- extraer_noticias_fecha("delincuencia", "2025-04-25",
"2025-04-28", subir_a_bd = FALSE, fuentes="bbcl")

## End(Not run)

Extraccion de noticias de BioBio.cl por rango de fechas

Description

Esta funcion permite realizar una extraccion automatizada de noticias de BioBio.cl utilizando un rango de fechas.

Usage

extraer_noticias_fecha_bbcl(search_query, fecha_inicio, fecha_fin)

Arguments

search_query

Una frase de busqueda (obligatoria).

fecha_inicio

Fecha de inicio del rango de busqueda en formato "YYYY-MM-DD" (obligatoria).

fecha_fin

Fecha de fin del rango de busqueda en formato "YYYY-MM-DD" (obligatoria).

Value

Un dataframe con las noticias extraidas.

Examples

## Not run: 
noticias <- extraer_noticias_fecha_bbcl("inteligencia artificial", "2025-01-01",
"2025-02-24")

## End(Not run)

Extraccion de noticias de emol.com por rango de fechas

Description

Esta funcion permite realizar una extraccion automatizada de noticias de emol.com utilizando un rango de fechas.

Usage

extraer_noticias_fecha_emol(search_query, fecha_inicio, fecha_fin, fuente)

Arguments

search_query

Una frase de busqueda (obligatoria).

fecha_inicio

Fecha de inicio del rango de busqueda en formato "YYYY-MM-DD" (obligatoria).

fecha_fin

Fecha de fin del rango de busqueda en formato "YYYY-MM-DD" (obligatoria).

fuente

Fuente de emol para iterar (obligatoria).

Value

Un dataframe con las noticias extraidas.

Examples

## Not run: 
noticias <- extraer_noticias_fecha_emol("inteligencia artificial", "2025-01-01",
"2025-02-24", fuente="emol")

## End(Not run)

Extraccion de noticias de medios chilenos por cantidad maxima de resultados

Description

Esta funcion permite realizar una extraccion automatizada de noticias de BioBio y fuentes de El Mercurio.

Usage

extraer_noticias_max_res(
  search_query,
  max_results = NULL,
  subir_a_bd = TRUE,
  fuentes = "todas"
)

Arguments

search_query

Una frase de busqueda (obligatoria).

max_results

Numero maximo de resultados a extraer (opcional, por defecto todos).

subir_a_bd

por defecto TRUE, FALSE para test y cosas por el estilo (opcional).

fuentes

por defecto marca todas las fuentes, pero se puede elegir una o varias de las disponibles en el README. (opcional)

Details

Es importante mencionar que si tiene mas de una fuente seleccionada, la cantidad maxima de resultados se aplicara para cada una de las fuentes, es decir, si pones max_results = 10 y tienes fuentes = "emol,guioteca,bbcl" tendras como maximo 30 resultados.

Value

Un dataframe con las noticias extraidas.

Examples

## Not run: 
noticias <- extraer_noticias_max_res("inteligencia artificial",
max_results = 20, fuentes="bbcl, emol", subir_a_bd = FALSE)

## End(Not run)

Extraccion de noticias de BioBio.cl por cantidad maxima de resultados

Description

Esta funcion permite realizar una extraccion automatizada de noticias de BioBio.cl entregando como parametro una cantidad maxima de resultados.

Usage

extraer_noticias_max_res_bbcl(search_query, max_results = NULL)

Arguments

search_query

Una frase de busqueda (obligatoria).

max_results

Cantidad maxima de resultados (opcional).

Value

Un dataframe con las noticias extraidas.

Examples

## Not run: 
noticias <- extraer_noticias_fecha_bbcl("inteligencia artificial", "2025-01-01",
"2025-02-24")

## End(Not run)

Extraccion de noticias de Emol.com

Description

Esta funcion permite extraer noticias de las fuentes de Emol, tanto de las noticias no pagas de emol, como de guioteca y los medios regionales de El Mercurio

Usage

extraer_noticias_max_res_emol(search_query, max_results = NULL, fuente)

Arguments

search_query

Una frase de busqueda (obligatoria).

max_results

Numero maximo de resultados a extraer (opcional, por defecto todos).

fuente

Fuente de emol para iterar (obligatoria).

Value

Un dataframe con las noticias extraidas.

Examples

## Not run: 
noticias <- extraer_noticias_max_res_emol("inteligencia artificial", "2025-01-01",
"2025-02-24", fuente="mediosregionales")

## End(Not run)

Grafico de comparacion de medios por periodo (Interactivo)

Description

Esta funcion genera un grafico interactivo que compara la cantidad de publicaciones entre diferentes medios de medios, agrupadas por dia o por mes, con opcion de tema dark o light.

Usage

grafico_comparacion_medios(
  datos,
  titulo,
  fecha_inicio = NULL,
  fecha_fin = NULL,
  medios = NULL,
  agrupar_por = "day",
  tema = "light",
  tipo_grafico = "lineas"
)

Arguments

datos

Data frame con los datos procesados, que debe incluir las columnas 'fecha' y 'medio'.

titulo

Texto que aparecera en el titulo del grafico.

fecha_inicio

Fecha de inicio para la construccion del grafico en formato YYYY-MM-DD (opcional).

fecha_fin

Fecha de finalizacion para la construccion del grafico en formato YYYY-MM-DD (opcional).

medios

Vector de strings con las medios a comparar. Si es NULL, usa todas las medios disponibles.

agrupar_por

Cadena de texto que especifica el periodo de agrupacion. Valores validos son '"day"' (por defecto) o '"month"'.

tema

Tema del grafico. Valores validos son '"light"' (por defecto) o '"dark"'.

tipo_grafico

Tipo de visualizacion. Valores validos son '"lineas"' (por defecto) o '"barras"'.

Value

Un grafico plotly interactivo que muestra la comparacion de publicaciones por medio y periodo.

Examples

## Not run: 
# Comparar todas las medios por mes
datos <- extraer_noticias_fecha("delincuencia", "2024-01-01", "2025-01-01", subir_a_bd = FALSE)
grafico_comparacion_medios(datos, titulo = "Cobertura de Delincuencia por Medio",
                            agrupar_por = "month", tema = "dark")

# Comparar medios especificas por dia
grafico_comparacion_medios(datos, titulo = "Comparacion BBCl vs emol",
                            medios = c("bbcl", "emol"),
                            fecha_inicio = "2024-06-01", fecha_fin = "2024-06-30",
                            agrupar_por = "day", tipo_grafico = "barras")

## End(Not run)



Grafico de notas por periodo (interactivo)

Description

Esta funcion genera un grafico interactivo que muestra la cantidad de publicaciones agrupadas por dia o por mes, con opcion de tema dark o light.

Usage

grafico_notas_fecha(
  datos,
  titulo,
  fecha_inicio = NULL,
  fecha_fin = NULL,
  agrupar_por = "day",
  tema = "light"
)

Arguments

datos

Data frame con los datos procesados, que debe incluir la columna 'fecha' en formato YYYY-MM-DD.

titulo

Texto que aparecera en el titulo del grafico.

fecha_inicio

Fecha de inicio para la construccion del grafico en formato YYYY-MM-DD (opcional).

fecha_fin

Fecha de finalizacion para la construccion del grafico en formato YYYY-MM-DD (opcional).

agrupar_por

Cadena de texto que especifica el periodo de agrupacion. Valores validos son '"day"' (por defecto) o '"month"'.

tema

Tema del grafico. Valores validos son '"light"' (por defecto) o '"dark"'.

Value

Un grafico plotly interactivo que muestra la cantidad de publicaciones por el periodo seleccionado.

Examples

## Not run: 
# Ejemplo con tema dark, agrupando por mes
datos <- extraer_noticias_fecha("cambio climatico", "2024-01-01","2025-01-01", subir_a_bd = FALSE)
grafico_notas_fecha(datos, titulo = "Cambio Climatico (por mes)",
                    agrupar_por = "month", tema = "dark")

# Ejemplo con tema light, agrupando por dia
grafico_notas_fecha(datos, titulo = "Cambio Climatico (por dia)",
                    fecha_inicio = "2024-01-01", fecha_fin = "2024-03-31",
                    tema = "light")

## End(Not run)


Grafico de notas por mes

Description

Esta funcion genera un grafico de linea que muestra la cantidad de publicaciones agrupadas por mes.

Usage

grafico_notas_por_mes(datos, titulo, fecha_inicio = NULL, fecha_fin = NULL)

Arguments

datos

Data frame con los datos procesados, que debe incluir la columna 'fecha' en formato YYYY-MM-DD.

titulo

Texto que aparecera en el titulo del grafico.

fecha_inicio

Fecha de inicio para la construccion del grafico en formato YYYY-MM-DD (opcional).

fecha_fin

Fecha de finalizacion para la construccion del grafico en formato YYYY-MM-DD (opcional).

Value

Un grafico ggplot2 que muestra la cantidad de publicaciones por mes.

Examples

## Not run: 
datos <- extraer_noticias_fecha("cambio climatico", "2024-01-01","2025-01-01", subir_a_bd = FALSE)
grafico_notas_por_mes(datos, titulo = "Cambio Climatico",
fecha_inicio = "2024-01-01", fecha_fin = "2024-06-06")

## End(Not run)


Helper para extraer el resumen (bajada) de datos de Emol

Description

Esta funcion interna procesa la columna '_source.bajada' de una fila de datos de Emol para extraer el texto del resumen. Maneja casos donde '_source.bajada' puede ser NULL, un dataframe, una lista, o un valor atomico.

Usage

helper_extraer_resumen(bajada_val)

Arguments

bajada_val

El contenido de la columna '_source.bajada' de la fila actual.

Value

Un string (character) con el texto del resumen, o 'NA_character_' si no se puede extraer o si ocurre un error.


Helper para extraer y procesar los temas de datos de Emol

Description

Esta funcion interna procesa las columnas '_source.seccion', '_source.subSeccion' (si aplica), y '_source.temas' de una fila de datos de Emol para generar una lista de temas procesados. Los temas se convierten a minusculas y los espacios se reemplazan por guiones.

Usage

helper_extraer_temas(
  source_seccion,
  source_subseccion,
  source_temas,
  fuente_actual
)

Arguments

source_seccion

El contenido de la columna '_source.seccion'.

source_subseccion

El contenido de la columna '_source.subSeccion'.

source_temas

El contenido de la columna '_source.temas'. Puede ser un dataframe, lista, vector, o NULL.

fuente_actual

Un string que indica la fuente (e.g., "mediosregionales").

Value

Una lista que contiene un unico elemento: un vector de strings (character) con los temas procesados y unicos. Si no hay temas, devuelve una lista conteniendo un vector de caracteres vacio ('character(0)').


Helper para extraer la URL de la imagen de datos de Emol

Description

Esta funcion interna procesa las columnas relevantes de una fila de datos de Emol para extraer la URL de la imagen principal de la noticia. Prioriza '_source.tablas.tablaMedios' para fuentes "emol" y "mediosregionales", y recurre a '_source.imagen' para otras o si la primera falla. Maneja diferentes estructuras de datos (dataframes, listas, valores atomicos).

Usage

helper_extraer_url_imagen(source_tablas_medios, source_imagen, fuente_actual)

Arguments

source_tablas_medios

El contenido de la columna '_source.tablas.tablaMedios' de la fila actual. Puede ser un dataframe, lista, o NULL.

source_imagen

El contenido de la columna '_source.imagen' de la fila actual. Puede ser un string, lista, o NULL.

fuente_actual

Un string que indica la fuente de la noticia (e.g., "emol", "guioteca", "mediosregionales").

Value

Un string (character) con la URL de la imagen, o 'NA_character_' si no se puede extraer una URL valida o si ocurre un error.


Inicializa una solicitud a BioBio.cl y retorna el primer caso de busqueda

Description

Esta funcion permite realizar una consulta inicial a BioBio.cl utilizando una frase de busqueda.

Usage

init_req_bbcl(search_query)

Arguments

search_query

Una frase de busqueda (obligatoria).

Value

Un dataframe con el primer caso de la busqueda.

Examples

## Not run: 
primer_caso <- init_req_bbcl("inteligencia artificial")

## End(Not run)

Inicializa una solicitud a emol.com y retorna el primer caso de busqueda

Description

Esta funcion permite realizar una consulta inicial a emol.com utilizando una frase de busqueda.

Usage

init_req_emol(search_query, fuentes = "emol-todas")

Arguments

search_query

Una frase de busqueda (obligatoria).

fuentes

Un string donde se ponen las fuentes de emol a consultar

Value

Un dataframe con el primer caso de la busqueda.

Examples

## Not run: 
primer_caso <- init_req_emol("Boric", fuentes="emol")

## End(Not run)

Inicializa una solicitud a emol.com y retorna maximo 10 noticias

Description

Esta funcion auxiliar llama a emol.com utilizando una frase de busqueda. Entrega como maximo 10 resultados. Se debe llamar desde otras funciones solo con una fuente a la vez, es decir, sin llamar a emol-todas.

Usage

iteracion_emol(search_query, page = 0, fuentes = "emol-todas")

Arguments

search_query

Una frase de busqueda (obligatoria).

page

La pagina de busqueda para iterar, es un int

fuentes

Es un string que deberia tener solo fuentes de emol posibles separadas por comas.

Value

Un dataframe con el caso de la busqueda, incluyendo solo columnas especificas.

Examples

## Not run: 
primer_caso <- iteracion_emol("Boric", fuentes="emol-todas")

## End(Not run)

Funcion para limpiar notas de contenido HTML

Description

Esta funcion permite limpiar por completo las notas eliminando codigos y secciones irrelevantes. Verifica que el input sea un data frame con una columna llamada 'contenido'.

Usage

limpieza_notas(datos, sinonimos = c())

Arguments

datos

Data frame donde estan almacenadas las notas

sinonimos

Un vector de character

Value

Un dataframe con el contenido limpio en la columna contenido_limpio

Examples



datos <- extraer_noticias_max_res("inteligencia artificial", max_results= 150, subir_a_bd = FALSE)
datos_proc <- limpieza_notas(datos, sinonimos = c("IA", "AI"))


Parser de Fuentes

Description

Esta funcion toma un string que contiene nombres de fuentes separados por comas y devuelve una lista con cada fuente como un elemento separado, sin espacios en blanco adicionales.

Usage

parserFuentes(cadena)

Arguments

cadena

Un string que contiene nombres de fuentes separados por comas.

Value

Una lista de strings, cada uno representando una fuente sin espacios en blanco adicionales.

Examples

parserFuentes("bbcl, emol, mediosregionales, ")
parserFuentes(" emol-todas, bbcl")

Generar una tabla estilizada con las palabras mas frecuentes

Description

Esta funcion procesa la columna 'contenido_limpio' de un dataframe, tokeniza el texto, cuenta la frecuencia de cada palabra y genera una tabla con las palabras mas frecuentes.

Usage

tabla_frecuencia_palabras(datos, max_words, stop_words = NULL)

Arguments

datos

Data frame que contiene la columna 'contenido_limpio'.

max_words

Numero maximo de palabras que se mostraran en la tabla.

stop_words

Vector opcional de palabras que se deben excluir del conteo.

Value

Una tabla con las palabras mas frecuentes.

Examples

datos <- data.frame(
  contenido_limpio = c(
    "La ministra de Defensa Maya Fernandez enfrenta cuestionamientos
    el presidente Gabriel Boric solicita transparencia en los procesos.
    Renovacion Nacional pide la renuncia de Maya Fernandez debido a la polemica.
    La transparencia es fundamental en la politica y la gestion publica"
  ),
  stringsAsFactors = FALSE
)

# Probar la funcion con el dataframe de ejemplo
tabla_frecuencia_palabras(datos, max_words = 5, stop_words = c())

Funcion de nube de palabras

Description

Esta funcion permite realizar una nube de palabras con las palabras más frecuentes del corpus de noticias.

Usage

word_cloud(datos, max_words, stop_words = NULL)

Arguments

datos

data frame que incluye la columna contenido_limpio.

max_words

Cantidad maxima de palabras que apareceran en la nube.

stop_words

Definir las palabras que seran ignoradas en la visualizacion. Debe ser un vector de carácteres.

Value

Una nube de palabras con las palabras mas frecuentes.

Examples

## Not run: 
datos <- extraer_noticias_fecha("Boric",
"2025-03-01",
"2025-04-01",
fuentes="bbcl",
subir_a_bd = FALSE)
datos_proc <- limpieza_notas(datos)
word_cloud(datos_proc, max_words = 50, stop_words = c("es", "la"))

## End(Not run)