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)