#Gobierno
##Extraer textos El código realizado recorre una lista de URLs, realiza scraping de párrafos de texto específicos en cada página y guarda esos párrafos en archivos de texto distintos en una carpeta especificada. El nombre de cada archivo se basa en el contador y el año correspondiente, y el código imprime mensajes indicando la URL procesada y la ubicación del archivo guardado. Este proceso se repite para cada URL en la lista; para la lista de URLs de cada año sucesivamente. ###2019
# Cargar bibliotecas
library(rvest)
library(stringr)
# Lista de URLs que deseas scrapear
urls <- c(
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/conadis/articulos/la-educacion-y-personas-con-discapacidad&sa=U&ved=2ahUKEwio1cCsmqiCAxVClmoFHWwNCYI4ChAWegQICRAC&usg=AOvVaw2ZxPGDQC1pdIanX-DfJ5b0",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/difnacional/articulos/credencial-nacional-para-personas-con-discapacidad-200159&sa=U&ved=2ahUKEwif-Y2hm6iCAxX2kmoFHcZ3AOw4HhAWegQICRAB&usg=AOvVaw2ASBNH5bnWoe0rD6_eVB3k",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/profeco/documentos/los-derechos-de-las-personas-con-discapacidad-como-consumidoras%3Fstate%3Dpublished&sa=U&ved=2ahUKEwiFlI7TnaiCAxXjlmoFHcQ2BYc4UBAWegQIBhAC&usg=AOvVaw2mKLZDVIhf4vg-6eqRmO6l",
"https://sidof.segob.gob.mx/busquedaAvanzada/busqueda?tipo=C&tipotexto=F&texto=Personas%20con%20discapacidad&fechainicio=01-01-2019&fechahasta=31-12-2019&organismos=PL,PE,PJ,OA,EPE,OD,CV,VG,AV,TODOS&sinonimos=true",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cultura/prensa/vibra-chiapas-con-el-festival-internacional-de-marimbistas-222054&sa=U&ved=2ahUKEwjstOzCoKiCAxVlkGoFHS3BCGw4ChAWegQIAxAC&usg=AOvVaw1HaLsK-g5Mq8hN9H5Xk6CF",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/presidencia/articulos/version-estenografica-del-presidente-durante-la-entrega-de-los-programas-integrales-de-bienestar-en-san-luis-potosi&sa=U&ved=2ahUKEwiP-YG3oaiCAxXSgGoFHeL0CGw4UBAWegQIBRAC&usg=AOvVaw2UYMnXpcpoEoZ-eMxc51ba",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/issste/acciones-y-programas/programas-de-radio-ya-oissste-2019&sa=U&ved=2ahUKEwjP2fCao6iCAxVmk2oFHXCrANk4FBAWegQIAhAB&usg=AOvVaw1ZVI9YrUEIlfB9ZlFSfh-e",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/imta/articulos/impulsar-actividades-de-divulgacion-para-personas-con-discapacidad-nuevo-reto-en-el-quehacer-del-imta&sa=U&ved=2ahUKEwjH15zMo6iCAxWPomoFHVbRCt84KBAWegQIAxAC&usg=AOvVaw36iqD4XgcE7nYdaEji_VGA",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/salud/es/articulos/salud-y-bienestar-5%3Fidiom%3Des&sa=U&ved=2ahUKEwjM_9feo6iCAxU8nGoFHfyRB144MhAWegQICBAC&usg=AOvVaw1oZwNNJr00nluGZIrHdoEW",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/salud/prensa/se-llevara-a-cabo-la-1-carrera-sectorial-de-salud-conade-215324&sa=U&ved=2ahUKEwiwgILKpKiCAxVPg2oFHW0wDFk4RhAWegQICBAC&usg=AOvVaw2eAYQMDVuFN3NO0VvrYtvH",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/sectur/prensa/llega-a-la-ciudad-de-mexico-la-carrera-panamericana&sa=U&ved=2ahUKEwjWu8vkpKiCAxUNlGoFHSu4B7w4UBAWegQIBhAC&usg=AOvVaw2zCw6moLtlOzCDdetB9Lbq",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/inifap/prensa/huertos-urbanos-para-la-seguridad-alimentaria-y-la-salud-en-veracruz&sa=U&ved=2ahUKEwjWu8vkpKiCAxUNlGoFHSu4B7w4UBAWegQIBRAC&usg=AOvVaw3ao6FTZ-N4yFNoqQLc0ZzW",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/imss/prensa/com-314-se-llevara-a-cabo-la-1-carrera-sectorial-de-salud-conade&sa=U&ved=2ahUKEwiqs_P7pKiCAxVdkmoFHZ3WDSs4WhAWegQIABAC&usg=AOvVaw08YhV2mxAwUMYEFq7wkllz",
"https://www.gob.mx/salud/prensa/se-llevara-a-cabo-la-1-carrera-sectorial-de-salud-conade-215324?idiom=es-MX",
"https://www.gob.mx/presidencia/articulos/version-estenografica-de-la-conferencia-de-prensa-matutina-viernes-6-de-septiembre-2019?idiom=es", #"https://sidof.segob.gob.mx/notas/docFuente/5551176",
"https://sidof.segob.gob.mx/notas/docFuente/5551140",
"https://sidof.segob.gob.mx/notas/docFuente/5551351",
"https://sidof.segob.gob.mx/notas/docFuente/5555735",
"https://sidof.segob.gob.mx/notas/docFuente/5554923",
"https://sidof.segob.gob.mx/notas/docFuente/5566028",
"https://sidof.segob.gob.mx/notas/docFuente/5570425",
"https://sidof.segob.gob.mx/notas/docFuente/5570421",
"https://sidof.segob.gob.mx/notas/docFuente/5570422",
"https://sidof.segob.gob.mx/notas/docFuente/5570423",
"https://sidof.segob.gob.mx/notas/docFuente/5570424",
"https://sidof.segob.gob.mx/notas/docFuente/5570591",
"https://sidof.segob.gob.mx/notas/docFuente/5570589",
"https://sidof.segob.gob.mx/notas/docFuente/5570590",
"https://sidof.segob.gob.mx/notas/docFuente/5570586",
"https://sidof.segob.gob.mx/notas/docFuente/5570587",
"https://sidof.segob.gob.mx/notas/docFuente/5570588",
"https://sidof.segob.gob.mx/notas/docFuente/5570592",
"https://sidof.segob.gob.mx/notas/docFuente/5570667",
"https://sidof.segob.gob.mx/notas/docFuente/5570671",
"https://sidof.segob.gob.mx/notas/docFuente/5570668",
"https://sidof.segob.gob.mx/notas/docFuente/5570669",
"https://sidof.segob.gob.mx/notas/docFuente/5570670",
"https://sidof.segob.gob.mx/notas/docFuente/5570866",
"https://sidof.segob.gob.mx/notas/docFuente/5570868",
"https://sidof.segob.gob.mx/notas/docFuente/5570867",
"https://sidof.segob.gob.mx/notas/docFuente/5571022",
"https://sidof.segob.gob.mx/notas/docFuente/5571019",
"https://sidof.segob.gob.mx/notas/docFuente/5571020",
"https://sidof.segob.gob.mx/notas/docFuente/5571021",
"https://sidof.segob.gob.mx/notas/docFuente/5572817",
"https://sidof.segob.gob.mx/notas/docFuente/5575558",
"https://sidof.segob.gob.mx/notas/docFuente/5579722",
"https://sidof.segob.gob.mx/notas/docFuente/5583028","https://sidof.segob.gob.mx/notas/docFuente/5559300",
"https://sidof.segob.gob.mx/notas/docFuente/5559298",
"https://sidof.segob.gob.mx/notas/docFuente/5559298",
"https://sidof.segob.gob.mx/notas/docFuente/5559300",
"https://sidof.segob.gob.mx/notas/docFuente/5554796",
"https://sidof.segob.gob.mx/notas/docFuente/5552014"
)
# Función para extraer texto de los elementos "p" y "span"
extract_text <- function(url) {
webpage <- read_html(url)
p_text <- html_text(html_nodes(webpage, "p"))
span_text <- html_text(html_nodes(webpage, "span"))
return(c(p_text, span_text))
}
# Bucle para recorrer las URLs
contador19 <- 1
carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2019"
for (url in urls) {
# Aplicar la función a cada URL
datos <- extract_text(url)
# Guardar los datos en un archivo de texto
nombre_archivo <- file.path(carpeta, paste0("datos_2019_", contador19, ".txt"))# Nombre del archivo basado en el número en la URL
writeLines(datos, nombre_archivo)
contador19 <<- contador19 + 1
cat("Datos de", url, "guardados en", nombre_archivo, "\n")
}
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/conadis/articulos/la-educacion-y-personas-con-discapacidad&sa=U&ved=2ahUKEwio1cCsmqiCAxVClmoFHWwNCYI4ChAWegQICRAC&usg=AOvVaw2ZxPGDQC1pdIanX-DfJ5b0 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_1.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/difnacional/articulos/credencial-nacional-para-personas-con-discapacidad-200159&sa=U&ved=2ahUKEwif-Y2hm6iCAxX2kmoFHcZ3AOw4HhAWegQICRAB&usg=AOvVaw2ASBNH5bnWoe0rD6_eVB3k guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_2.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/profeco/documentos/los-derechos-de-las-personas-con-discapacidad-como-consumidoras%3Fstate%3Dpublished&sa=U&ved=2ahUKEwiFlI7TnaiCAxXjlmoFHcQ2BYc4UBAWegQIBhAC&usg=AOvVaw2mKLZDVIhf4vg-6eqRmO6l guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_3.txt
## Datos de https://sidof.segob.gob.mx/busquedaAvanzada/busqueda?tipo=C&tipotexto=F&texto=Personas%20con%20discapacidad&fechainicio=01-01-2019&fechahasta=31-12-2019&organismos=PL,PE,PJ,OA,EPE,OD,CV,VG,AV,TODOS&sinonimos=true guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_4.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cultura/prensa/vibra-chiapas-con-el-festival-internacional-de-marimbistas-222054&sa=U&ved=2ahUKEwjstOzCoKiCAxVlkGoFHS3BCGw4ChAWegQIAxAC&usg=AOvVaw1HaLsK-g5Mq8hN9H5Xk6CF guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_5.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/presidencia/articulos/version-estenografica-del-presidente-durante-la-entrega-de-los-programas-integrales-de-bienestar-en-san-luis-potosi&sa=U&ved=2ahUKEwiP-YG3oaiCAxXSgGoFHeL0CGw4UBAWegQIBRAC&usg=AOvVaw2UYMnXpcpoEoZ-eMxc51ba guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_6.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/issste/acciones-y-programas/programas-de-radio-ya-oissste-2019&sa=U&ved=2ahUKEwjP2fCao6iCAxVmk2oFHXCrANk4FBAWegQIAhAB&usg=AOvVaw1ZVI9YrUEIlfB9ZlFSfh-e guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_7.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/imta/articulos/impulsar-actividades-de-divulgacion-para-personas-con-discapacidad-nuevo-reto-en-el-quehacer-del-imta&sa=U&ved=2ahUKEwjH15zMo6iCAxWPomoFHVbRCt84KBAWegQIAxAC&usg=AOvVaw36iqD4XgcE7nYdaEji_VGA guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_8.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/salud/es/articulos/salud-y-bienestar-5%3Fidiom%3Des&sa=U&ved=2ahUKEwjM_9feo6iCAxU8nGoFHfyRB144MhAWegQICBAC&usg=AOvVaw1oZwNNJr00nluGZIrHdoEW guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_9.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/salud/prensa/se-llevara-a-cabo-la-1-carrera-sectorial-de-salud-conade-215324&sa=U&ved=2ahUKEwiwgILKpKiCAxVPg2oFHW0wDFk4RhAWegQICBAC&usg=AOvVaw2eAYQMDVuFN3NO0VvrYtvH guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_10.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/sectur/prensa/llega-a-la-ciudad-de-mexico-la-carrera-panamericana&sa=U&ved=2ahUKEwjWu8vkpKiCAxUNlGoFHSu4B7w4UBAWegQIBhAC&usg=AOvVaw2zCw6moLtlOzCDdetB9Lbq guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_11.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/inifap/prensa/huertos-urbanos-para-la-seguridad-alimentaria-y-la-salud-en-veracruz&sa=U&ved=2ahUKEwjWu8vkpKiCAxUNlGoFHSu4B7w4UBAWegQIBRAC&usg=AOvVaw3ao6FTZ-N4yFNoqQLc0ZzW guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_12.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/imss/prensa/com-314-se-llevara-a-cabo-la-1-carrera-sectorial-de-salud-conade&sa=U&ved=2ahUKEwiqs_P7pKiCAxVdkmoFHZ3WDSs4WhAWegQIABAC&usg=AOvVaw08YhV2mxAwUMYEFq7wkllz guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_13.txt
## Datos de https://www.gob.mx/salud/prensa/se-llevara-a-cabo-la-1-carrera-sectorial-de-salud-conade-215324?idiom=es-MX guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_14.txt
## Datos de https://www.gob.mx/presidencia/articulos/version-estenografica-de-la-conferencia-de-prensa-matutina-viernes-6-de-septiembre-2019?idiom=es guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_15.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5551140 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_16.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5551351 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_17.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5555735 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_18.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5554923 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_19.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5566028 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_20.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570425 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_21.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570421 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_22.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570422 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_23.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570423 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_24.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570424 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_25.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570591 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_26.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570589 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_27.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570590 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_28.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570586 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_29.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570587 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_30.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570588 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_31.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570592 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_32.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570667 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_33.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570671 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_34.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570668 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_35.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570669 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_36.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570670 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_37.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570866 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_38.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570868 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_39.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5570867 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_40.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5571022 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_41.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5571019 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_42.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5571020 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_43.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5571021 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_44.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5572817 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_45.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5575558 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_46.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5579722 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_47.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5583028 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_48.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5559300 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_49.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5559298 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_50.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5559298 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_51.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5559300 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_52.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5554796 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_53.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5552014 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2019/datos_2019_54.txt
###2020
# Cargar bibliotecas
library(rvest)
library(stringr)
# Lista de URLs que deseas scrapear
urls <- c( "https://www.gob.mx/bienestar/documentos/personas-con-discapacidad-250279?state=published",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/stps/es/articulos/pensiones-para-el-bienestar-de-personas-con-discapacidad-y-de-adultos-mayores-conferencias-sobre-programas-del-bienestar%3Fidiom%3Des&sa=U&ved=2ahUKEwio1cCsmqiCAxVClmoFHWwNCYI4ChAWegQIBRAC&usg=AOvVaw3ipFTMQeIByN1jQnd5aI-Y",
"https://www.gob.mx/bienestar/prensa/pension-para-personas-con-discapacidad-derecho-constitucional-y-politica-nacional-historica",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/issste/acciones-y-programas/programa-atencion-a-personas-con-discapacidad&sa=U&ved=2ahUKEwjgrOr1mqiCAxU2lGoFHUXTA_A4FBAWegQIAxAB&usg=AOvVaw2V6GyOROBTOgEyaSfD5rnY",
"https://www.gob.mx/inmujeres/acciones-y-programas/cartilla-de-derechos-sexuales-y-derechos-reproductivos-de-las-personas-con-discapacidad-180927",
"https://www.gob.mx/afac/acciones-y-programas/personas-con-discapacidad-245496",
"https://www.gob.mx/difnacional/acciones-y-programas/credencial-nacional-para-personas-con-discapacidad-239815",
"https://www.gob.mx/bienestar/prensa/inicia-el-3-de-noviembre-pago-de-las-pensiones-para-el-bienestar-en-todo-el-pais?idiom=es",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/difnacional/documentos/como-auxiliar-a-una-persona-con-discapacidad-durante-una-emergencia&sa=U&ved=2ahUKEwjvhtT2naiCAxUBlGoFHT0GAeA4WhAWegQIBhAC&usg=AOvVaw1pujS9jZkjN8iPkolsgfeA",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/stps/articulos/programa-de-pension-para-el-bienestar-de-personas-con-discapacidad-conferencias-sobre-programas-del-bienestar&sa=U&ved=2ahUKEwiJ1MrXoKiCAxWSkGoFHeKPBIo4FBAWegQICRAC&usg=AOvVaw1Adkb1LmdEUEBnW_jGCp-w",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/stps/articulos/balance-bienestar-impacto-de-programas-integrales-conferencias-sobre-programas-del-bienestar%3Fidiom%3Des&sa=U&ved=2ahUKEwiJ1MrXoKiCAxWSkGoFHeKPBIo4FBAWegQIAhAC&usg=AOvVaw19e0yH7sQ-f1-Gn8qa1o00",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cms/uploads/attachment/file/555426/ITP_RIS_PACS_2020.pdf&sa=U&ved=2ahUKEwiJ1MrXoKiCAxWSkGoFHeKPBIo4FBAWegQIBBAC&usg=AOvVaw2rnVcFOfaFhftNhyGps99X",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/stps/es/articulos/la-linea-del-bienestar-conferencias-sobre-programas-del-bienestar%3Fidiom%3Des&sa=U&ved=2ahUKEwiP-YG3oaiCAxXSgGoFHeL0CGw4UBAWegQIBBAC&usg=AOvVaw0ZVd2UfTeRoFFazXo8u70e",
"https://www.gob.mx/conavi/acciones-y-programas/programa-emergente-de-vivienda",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/sedena/prensa/se-recuperaron-mas-de-124-000-litros-de-hidrocarburo%3Fidiom%3Des-MX&sa=U&ved=2ahUKEwjH15zMo6iCAxWPomoFHVbRCt84KBAWegQIBRAC&usg=AOvVaw2t07-0AxAnWRPVzgOzz3dR",
"https://www.gob.mx/condusef/prensa/utiliza-nuestros-medios-remotos-para-recibir-asesoria-orientacion-presentar-una-queja-o-tener-una-conciliacion-telefonica",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/sedena/prensa/acciones-del-plan-conjunto-del-gobierno-de-mexico-para-combatir-el-robo-de-hidrocarburos-de-pemex-en-edo-mex-b-c-hgo-tab-y-tamps%3Fidiom%3Des-MX&sa=U&ved=2ahUKEwjToPWxpKiCAxVrmmoFHZ_dDSA4PBAWegQICBAC&usg=AOvVaw0zTVTw8KI9UShLcoU6_REe",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/liconsa/articulos/reinauguran-lecheria-liconsa-en-texcoco&sa=U&ved=2ahUKEwiwgILKpKiCAxVPg2oFHW0wDFk4RhAWegQIBhAC&usg=AOvVaw3ZnXr8uBxcaHIPaoCntzrd",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/sedena/prensa/se-recuperaron-mas-de-124-000-litros-de-hidrocarburo&sa=U&ved=2ahUKEwjWu8vkpKiCAxUNlGoFHSu4B7w4UBAWegQICRAC&usg=AOvVaw16qNmoaHimb5GrWnPf6GPE",
"https://sidof.segob.gob.mx/notas/docFuente/5608847",
"https://sidof.segob.gob.mx/notas/docFuente/5608441",
"https://sidof.segob.gob.mx/notas/docFuente/5597114",
"https://sidof.segob.gob.mx/notas/docFuente/5595307",
"https://sidof.segob.gob.mx/notas/docFuente/5595031",
"https://sidof.segob.gob.mx/notas/docFuente/5595030",
"https://sidof.segob.gob.mx/notas/docFuente/5594376",
"https://sidof.segob.gob.mx/notas/docFuente/5594377",
"https://sidof.segob.gob.mx/notas/docFuente/5587914",
"https://sidof.segob.gob.mx/notas/docFuente/5585992",
"https://sidof.segob.gob.mx/notas/docFuente/5585641","https://sidof.segob.gob.mx/notas/docFuente/5604780",
"https://sidof.segob.gob.mx/notas/docFuente/5588429",
"https://sidof.segob.gob.mx/notas/docFuente/5609280",
"https://sidof.segob.gob.mx/notas/docFuente/5609085",
"https://sidof.segob.gob.mx/notas/docFuente/5609175",
"https://sidof.segob.gob.mx/notas/docFuente/5608467"
)
# Función para extraer texto de los elementos "p" y "span"
extract_text <- function(url) {
webpage <- read_html(url)
p_text <- html_text(html_nodes(webpage, "p"))
span_text <- html_text(html_nodes(webpage, "span"))
return(c(p_text, span_text))
}
# Bucle para recorrer las URLs
contador20 <- 1
carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2020"
for (url in urls) {
# Aplicar la función a cada URL
datos <- extract_text(url)
# Guardar los datos en un archivo de texto
nombre_archivo <- file.path(carpeta, paste0("datos_2020_", contador20, ".txt"))# Nombre del archivo basado en el número en la URL
writeLines(datos, nombre_archivo)
contador20 <<- contador20 + 1
cat("Datos de", url, "guardados en", nombre_archivo, "\n")
}
## Datos de https://www.gob.mx/bienestar/documentos/personas-con-discapacidad-250279?state=published guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_1.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/stps/es/articulos/pensiones-para-el-bienestar-de-personas-con-discapacidad-y-de-adultos-mayores-conferencias-sobre-programas-del-bienestar%3Fidiom%3Des&sa=U&ved=2ahUKEwio1cCsmqiCAxVClmoFHWwNCYI4ChAWegQIBRAC&usg=AOvVaw3ipFTMQeIByN1jQnd5aI-Y guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_2.txt
## Datos de https://www.gob.mx/bienestar/prensa/pension-para-personas-con-discapacidad-derecho-constitucional-y-politica-nacional-historica guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_3.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/issste/acciones-y-programas/programa-atencion-a-personas-con-discapacidad&sa=U&ved=2ahUKEwjgrOr1mqiCAxU2lGoFHUXTA_A4FBAWegQIAxAB&usg=AOvVaw2V6GyOROBTOgEyaSfD5rnY guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_4.txt
## Datos de https://www.gob.mx/inmujeres/acciones-y-programas/cartilla-de-derechos-sexuales-y-derechos-reproductivos-de-las-personas-con-discapacidad-180927 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_5.txt
## Datos de https://www.gob.mx/afac/acciones-y-programas/personas-con-discapacidad-245496 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_6.txt
## Datos de https://www.gob.mx/difnacional/acciones-y-programas/credencial-nacional-para-personas-con-discapacidad-239815 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_7.txt
## Datos de https://www.gob.mx/bienestar/prensa/inicia-el-3-de-noviembre-pago-de-las-pensiones-para-el-bienestar-en-todo-el-pais?idiom=es guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_8.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/difnacional/documentos/como-auxiliar-a-una-persona-con-discapacidad-durante-una-emergencia&sa=U&ved=2ahUKEwjvhtT2naiCAxUBlGoFHT0GAeA4WhAWegQIBhAC&usg=AOvVaw1pujS9jZkjN8iPkolsgfeA guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_9.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/stps/articulos/programa-de-pension-para-el-bienestar-de-personas-con-discapacidad-conferencias-sobre-programas-del-bienestar&sa=U&ved=2ahUKEwiJ1MrXoKiCAxWSkGoFHeKPBIo4FBAWegQICRAC&usg=AOvVaw1Adkb1LmdEUEBnW_jGCp-w guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_10.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/stps/articulos/balance-bienestar-impacto-de-programas-integrales-conferencias-sobre-programas-del-bienestar%3Fidiom%3Des&sa=U&ved=2ahUKEwiJ1MrXoKiCAxWSkGoFHeKPBIo4FBAWegQIAhAC&usg=AOvVaw19e0yH7sQ-f1-Gn8qa1o00 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_11.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cms/uploads/attachment/file/555426/ITP_RIS_PACS_2020.pdf&sa=U&ved=2ahUKEwiJ1MrXoKiCAxWSkGoFHeKPBIo4FBAWegQIBBAC&usg=AOvVaw2rnVcFOfaFhftNhyGps99X guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_12.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/stps/es/articulos/la-linea-del-bienestar-conferencias-sobre-programas-del-bienestar%3Fidiom%3Des&sa=U&ved=2ahUKEwiP-YG3oaiCAxXSgGoFHeL0CGw4UBAWegQIBBAC&usg=AOvVaw0ZVd2UfTeRoFFazXo8u70e guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_13.txt
## Datos de https://www.gob.mx/conavi/acciones-y-programas/programa-emergente-de-vivienda guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_14.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/sedena/prensa/se-recuperaron-mas-de-124-000-litros-de-hidrocarburo%3Fidiom%3Des-MX&sa=U&ved=2ahUKEwjH15zMo6iCAxWPomoFHVbRCt84KBAWegQIBRAC&usg=AOvVaw2t07-0AxAnWRPVzgOzz3dR guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_15.txt
## Datos de https://www.gob.mx/condusef/prensa/utiliza-nuestros-medios-remotos-para-recibir-asesoria-orientacion-presentar-una-queja-o-tener-una-conciliacion-telefonica guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_16.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/sedena/prensa/acciones-del-plan-conjunto-del-gobierno-de-mexico-para-combatir-el-robo-de-hidrocarburos-de-pemex-en-edo-mex-b-c-hgo-tab-y-tamps%3Fidiom%3Des-MX&sa=U&ved=2ahUKEwjToPWxpKiCAxVrmmoFHZ_dDSA4PBAWegQICBAC&usg=AOvVaw0zTVTw8KI9UShLcoU6_REe guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_17.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/liconsa/articulos/reinauguran-lecheria-liconsa-en-texcoco&sa=U&ved=2ahUKEwiwgILKpKiCAxVPg2oFHW0wDFk4RhAWegQIBhAC&usg=AOvVaw3ZnXr8uBxcaHIPaoCntzrd guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_18.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/sedena/prensa/se-recuperaron-mas-de-124-000-litros-de-hidrocarburo&sa=U&ved=2ahUKEwjWu8vkpKiCAxUNlGoFHSu4B7w4UBAWegQICRAC&usg=AOvVaw16qNmoaHimb5GrWnPf6GPE guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_19.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5608847 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_20.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5608441 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_21.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5597114 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_22.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5595307 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_23.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5595031 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_24.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5595030 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_25.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5594376 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_26.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5594377 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_27.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5587914 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_28.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5585992 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_29.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5585641 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_30.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5604780 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_31.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5588429 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_32.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5609280 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_33.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5609085 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_34.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5609175 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_35.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5608467 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2020/datos_2020_36.txt
###2021
library(rvest)
library(stringr)
# Lista de URLs que deseas scrapear
urls <- c( "https://www.gob.mx/issste/articulos/hablemos-de-discapacidad?idiom=es",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/salud/prensa/530-con-discapacidad-auditiva-2-3-millones-de-personas-instituto-nacional-de-rehabilitacion%3Fidiom%3Des&sa=U&ved=2ahUKEwjQusz9nKiCAxVsmGoFHZmhCCU4MhAWegQIBxAC&usg=AOvVaw1lrCmkP5T6iTNWjaonM0CU",
"https://www.gob.mx/cultura/prensa/con-la-develacion-de-una-placa-conmemorativa-por-sus-150-representaciones-la-plaza-de-juan-y-juana-concluye-su-temporada-en-el-helenico", "https://sidof.segob.gob.mx/notas/docFuente/5638368",
"https://sidof.segob.gob.mx/notas/docFuente/5637587",
"https://sidof.segob.gob.mx/notas/docFuente/5635321",
"https://sidof.segob.gob.mx/notas/docFuente/5635287",
"https://sidof.segob.gob.mx/notas/docFuente/5630835",
"https://sidof.segob.gob.mx/notas/docFuente/5627750",
"https://sidof.segob.gob.mx/notas/docFuente/5625538",
"https://sidof.segob.gob.mx/notas/docFuente/5623645",
"https://sidof.segob.gob.mx/notas/docFuente/5622019",
"https://sidof.segob.gob.mx/notas/docFuente/5620785",
"https://sidof.segob.gob.mx/notas/docFuente/5617662",
"https://sidof.segob.gob.mx/notas/docFuente/5616248",
"https://sidof.segob.gob.mx/notas/docFuente/5613613",
"https://sidof.segob.gob.mx/notas/docFuente/5612348",
"https://sidof.segob.gob.mx/notas/docFuente/5639631",
"https://sidof.segob.gob.mx/notas/docFuente/5639173",
"https://sidof.segob.gob.mx/notas/docFuente/5630835",
"https://sidof.segob.gob.mx/notas/docFuente/5625354",
"https://sidof.segob.gob.mx/notas/docFuente/5623459",
"https://sidof.segob.gob.mx/notas/docFuente/5622959",
"https://sidof.segob.gob.mx/notas/docFuente/5621645",
"https://sidof.segob.gob.mx/notas/docFuente/5620223",
"https://sidof.segob.gob.mx/notas/docFuente/5617045",
"https://sidof.segob.gob.mx/notas/docFuente/5616261",
"https://sidof.segob.gob.mx/notas/docFuente/5616185",
"https://sidof.segob.gob.mx/notas/docFuente/5616185",
"https://sidof.segob.gob.mx/notas/docFuente/5639618",
"https://sidof.segob.gob.mx/notas/docFuente/5639414",
"https://sidof.segob.gob.mx/notas/docFuente/5636727",
"https://sidof.segob.gob.mx/notas/docFuente/5630092",
"https://sidof.segob.gob.mx/notas/docFuente/5624455",
"https://sidof.segob.gob.mx/notas/docFuente/5622244",
"https://sidof.segob.gob.mx/notas/docFuente/5622243",
"https://sidof.segob.gob.mx/notas/docFuente/5620724",
"https://sidof.segob.gob.mx/notas/docFuente/5620725",
"https://sidof.segob.gob.mx/notas/docFuente/5620723",
"https://sidof.segob.gob.mx/notas/docFuente/5620722",
"https://sidof.segob.gob.mx/notas/docFuente/5620721",
"https://sidof.segob.gob.mx/notas/docFuente/5620720",
"https://sidof.segob.gob.mx/notas/docFuente/5620555",
"https://sidof.segob.gob.mx/notas/docFuente/5620554",
"https://sidof.segob.gob.mx/notas/docFuente/5620553",
"https://sidof.segob.gob.mx/notas/docFuente/5620557",
"https://sidof.segob.gob.mx/notas/docFuente/5620556",
"https://sidof.segob.gob.mx/notas/docFuente/5620376",
"https://sidof.segob.gob.mx/notas/docFuente/5620381",
"https://sidof.segob.gob.mx/notas/docFuente/5620377",
"https://sidof.segob.gob.mx/notas/docFuente/5620557",
"https://sidof.segob.gob.mx/notas/docFuente/5620556",
"https://sidof.segob.gob.mx/notas/docFuente/5620376",
"https://sidof.segob.gob.mx/notas/docFuente/5620381",
"https://sidof.segob.gob.mx/notas/docFuente/5620377",
"https://sidof.segob.gob.mx/notas/docFuente/5620380",
"https://sidof.segob.gob.mx/notas/docFuente/5620379",
"https://sidof.segob.gob.mx/notas/docFuente/5620378",
"https://sidof.segob.gob.mx/notas/docFuente/5620229",
"https://sidof.segob.gob.mx/notas/docFuente/5620230",
"https://sidof.segob.gob.mx/notas/docFuente/5620228",
"https://sidof.segob.gob.mx/notas/docFuente/5620227",
"https://sidof.segob.gob.mx/notas/docFuente/5620226",
"https://sidof.segob.gob.mx/notas/docFuente/5620225",
"https://sidof.segob.gob.mx/notas/docFuente/5620119",
"https://sidof.segob.gob.mx/notas/docFuente/5620123",
"https://sidof.segob.gob.mx/notas/docFuente/5620120",
"https://sidof.segob.gob.mx/notas/docFuente/5620122",
"https://sidof.segob.gob.mx/notas/docFuente/5622671"
)
# Bucle para recorrer las URLs
contador21 <- 1
carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2021"
for (url in urls) {
# Aplicar la función a cada URL
datos <- extract_text(url)
# Guardar los datos en un archivo de texto
nombre_archivo <- file.path(carpeta, paste0("datos_2021_", contador21, ".txt"))# Nombre del archivo basado en el número en la URL
writeLines(datos, nombre_archivo)
contador21 <<- contador21 + 1
cat("Datos de", url, "guardados en", nombre_archivo, "\n")
}
## Datos de https://www.gob.mx/issste/articulos/hablemos-de-discapacidad?idiom=es guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_1.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/salud/prensa/530-con-discapacidad-auditiva-2-3-millones-de-personas-instituto-nacional-de-rehabilitacion%3Fidiom%3Des&sa=U&ved=2ahUKEwjQusz9nKiCAxVsmGoFHZmhCCU4MhAWegQIBxAC&usg=AOvVaw1lrCmkP5T6iTNWjaonM0CU guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_2.txt
## Datos de https://www.gob.mx/cultura/prensa/con-la-develacion-de-una-placa-conmemorativa-por-sus-150-representaciones-la-plaza-de-juan-y-juana-concluye-su-temporada-en-el-helenico guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_3.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5638368 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_4.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5637587 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_5.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5635321 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_6.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5635287 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_7.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5630835 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_8.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5627750 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_9.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5625538 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_10.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5623645 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_11.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5622019 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_12.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620785 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_13.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5617662 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_14.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5616248 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_15.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5613613 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_16.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5612348 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_17.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5639631 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_18.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5639173 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_19.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5630835 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_20.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5625354 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_21.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5623459 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_22.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5622959 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_23.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5621645 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_24.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620223 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_25.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5617045 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_26.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5616261 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_27.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5616185 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_28.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5616185 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_29.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5639618 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_30.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5639414 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_31.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5636727 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_32.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5630092 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_33.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5624455 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_34.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5622244 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_35.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5622243 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_36.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620724 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_37.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620725 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_38.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620723 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_39.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620722 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_40.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620721 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_41.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620720 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_42.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620555 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_43.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620554 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_44.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620553 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_45.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620557 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_46.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620556 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_47.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620376 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_48.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620381 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_49.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620377 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_50.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620557 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_51.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620556 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_52.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620376 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_53.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620381 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_54.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620377 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_55.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620380 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_56.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620379 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_57.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620378 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_58.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620229 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_59.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620230 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_60.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620228 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_61.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620227 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_62.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620226 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_63.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620225 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_64.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620119 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_65.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620123 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_66.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620120 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_67.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5620122 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_68.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5622671 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2021/datos_2021_69.txt
###2022
library(rvest)
library(stringr)
# Lista de URLs que deseas scrapear
urls <- c( "https://sidof.segob.gob.mx/notas/docFuente/5668034","https://sidof.segob.gob.mx/notas/docFuente/5676170",
"https://sidof.segob.gob.mx/notas/docFuente/5675906",
"https://sidof.segob.gob.mx/notas/docFuente/5673166",
"https://sidof.segob.gob.mx/notas/docFuente/5672648",
"https://sidof.segob.gob.mx/notas/docFuente/5667301",
"https://sidof.segob.gob.mx/notas/docFuente/5664666",
"https://sidof.segob.gob.mx/notas/docFuente/5657708",
"https://sidof.segob.gob.mx/notas/docFuente/5651686",
"https://sidof.segob.gob.mx/notas/docFuente/5641024",
"https://sidof.segob.gob.mx/notas/docFuente/5640415"
)
# Bucle para recorrer las URLs
contador22 <- 61
carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2022"
for (url in urls) {
# Aplicar la función a cada URL
datos <- extract_text(url)
# Guardar los datos en un archivo de texto
nombre_archivo <- file.path(carpeta, paste0("datos_2022_", contador22, ".txt"))# Nombre del archivo basado en el número en la URL
writeLines(datos, nombre_archivo)
contador22 <<- contador22 + 1
cat("Datos de", url, "guardados en", nombre_archivo, "\n")
}
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5668034 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_61.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5676170 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_62.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5675906 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_63.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5673166 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_64.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5672648 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_65.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5667301 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_66.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5664666 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_67.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5657708 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_68.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5651686 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_69.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5641024 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_70.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5640415 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2022/datos_2022_71.txt
###2023
library(rvest)
library(stringr)
# Lista de URLs que deseas scrapear
urls <- c( "https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cnbv/articulos/inclusion-financiera-de-las-personas-con-discapacidad&sa=U&ved=2ahUKEwj2xNvXmKiCAxWWoWoFHSVfDfsQFnoECAcQAg&usg=AOvVaw3-njAWRpp5-zAOGcRqDvgj",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/conadis/es/articulos/dia-nacional-de-las-mujeres-con-discapacidad&sa=U&ved=2ahUKEwio1cCsmqiCAxVClmoFHWwNCYI4ChAWegQIAxAC&usg=AOvVaw341_FGNyyq6rzXxBw63nL1",
"https://www.gob.mx/tramites/ficha/pasaporte-ordinario-para-menores-de-edad-o-persona-con-discapacidad-mayor-de-edad-que-no-pueda-manifestar-su-voluntad-sin-presencia-del-tutor/SRE149",
"https://www.gob.mx/bienestar/prensa/san-luis-potosi-del-7-al-30-de-junio-registro-a-la-pension-universal-de-las-personas-con-discapacidad?idiom=es",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/conadis/articulos/listado-de-instituciones-de-atencion-a-personas-con-discapacidad-de-las-entidades-federativas-de-la-republica-mexicana&sa=U&ved=2ahUKEwjgrOr1mqiCAxU2lGoFHUXTA_A4FBAWegQIARAC&usg=AOvVaw0qXyr8HOU3tNYQqhCOFgsQ",
"https://www.gob.mx/conadis/que-hacemos",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/bienestar/prensa/secretaria-de-bienestar-y-gobierno-de-veracruz-concretan-universalidad-de-la-pension-para-el-bienestar-de-las-personas-con-discapacidad%3Fidiom%3Des&sa=U&ved=2ahUKEwif-Y2hm6iCAxX2kmoFHcZ3AOw4HhAWegQIABAC&usg=AOvVaw0vrRtevBD6iW1GS0_33rWc",
"https://www.gob.mx/tramites/ficha/pasaporte-para-mexicanos-mayores-de-sesenta-anos-y-personas-con-discapacidad-comprobada-con-vigencia-de-seis-tres-o-un-ano-expedido-en-las-oficinas-consulares-de-mexico-en-el-exterior/SRE573",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/bienestar/prensa/pension-para-bienestar-de-las-personas-con-discapacidad-sera-universal-en-san-luis-potosi-ariadna-montiel-y-ricardo-gallardo%3Fidiom%3Des&sa=U&ved=2ahUKEwjlsPbbm6iCAxW-lGoFHU06B9w4KBAWegQIABAC&usg=AOvVaw0_VADoT1sUPviwGF5WZghJ",
"https://www.gob.mx/pensionpersonascondiscapacidad",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/bienestar/prensa/en-veracruz-la-pension-para-el-bienestar-de-personas-con-discapacidad-ya-es-universal%3Fidiom%3Des&sa=U&ved=2ahUKEwjlsPbbm6iCAxW-lGoFHU06B9w4KBAWegQIARAC&usg=AOvVaw3eI1fA9mcK0yIOu-MqRYuf",
"https://www.gob.mx/bienestar/prensa/tamaulipas-del-7-al-30-de-junio-registro-a-la-pension-universal-de-las-personas-con-discapacidad?idiom=es",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/bienestar/prensa/del-2-al-31-de-octubre-registro-a-pension-universal-de-las-personas-con-discapacidad-en-estado-de-mexico%3Fidiom%3Des&sa=U&ved=2ahUKEwj906uznaiCAxVUlmoFHZAbCd44RhAWegQIABAC&usg=AOvVaw2BE8Jn9PMYXAnqIqY7SsiE",
"https://www.gob.mx/tramites/ficha/renovacion-de-pasaporte-ordinario-para-menores-de-edad-o-persona-con-discapacidad-mayor-de-edad-que-no-pueda-manifestar-su-voluntad-con-presencia-del-tutor/SRE150",
"https://www.gob.mx/bienestar/prensa/pension-para-personas-con-discapacidad-aumenta-a-dos-mil-950-pesos-bimestrales-ariadna-montiel?idiom=es",
"https://www.gob.mx/bienestar/prensa/quintana-roo-del-7-al-30-de-junio-registro-a-la-pension-universal-de-las-personas-con-discapacidad?idiom=es",
"https://www.gob.mx/bienestar/prensa/veracruz-del-26-de-junio-al-26-de-julio-registro-a-la-pension-universal-de-personas-con-discapacidad?idiom=es",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/segob/prensa/lenguaje-incluyente-genera-equidad-y-garantiza-derechos-de-ninas-ninos-y-adolescentes%3Fidiom%3Des&sa=U&ved=2ahUKEwjAtLrVnqiCAxUIlGoFHZv4BkcQFnoECAcQAg&usg=AOvVaw34ryYJyIF0QwoeLzEg7BlD",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/presidencia/es/articulos/version-estenografica-conferencia-de-prensa-del-presidente-andres-manuel-lopez-obrador-del-30-de-octubre-de-2023&sa=U&ved=2ahUKEwjAps7Kn6iCAxVPoWoFHYFnAwk4ChAWegQICRAB&usg=AOvVaw2_W1-o7gdAWElWENZknJMx",
"https://www.gob.mx/tramites/ficha/renovacion-de-licencia-de-conducir/Entidades5568",
"https://www.gob.mx/tramites/ficha/matricula-consular-de-alta-seguridad-para-menores-de-edad-y-discapacitados-ante-la-sre/SRE1208",
"https://www.gob.mx/cultura/prensa/vuelven-las-funciones-relajadas-del-inbal-con-el-programa-intervenciones-emergentes",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cultura/prensa/estudiantado-de-danza-clasica-y-contemporanea-realiza-practicas-escenicas-en-el-foro-cultural-coyoacanense%3Fidiom%3Des-MX&sa=U&ved=2ahUKEwi157qxo6iCAxWIlGoFHSKrDb04HhAWegQIBRAC&usg=AOvVaw3YAmz2hXA9TS7OoF-2eKYK",
"https://www.gob.mx/condusef/prensa/a-partir-de-este-2-de-mayo-la-condusef-atiende-nuevamente-en-sus-oficinas-sin-necesidad-de-agendar-una-cita?idiom=es",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/salud/articulos/dia-mundial-de-la-rehabilitacion-motriz&sa=U&ved=2ahUKEwjWu8vkpKiCAxUNlGoFHSu4B7w4UBAWegQIAxAC&usg=AOvVaw3695BcdFGPu1P82gN1Jx1Y",
"https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cms/uploads/attachment/file/828751/MARINA_COMUNICADO_RN-6_015_CARRERA.pdf&sa=U&ved=2ahUKEwiqs_P7pKiCAxVdkmoFHZ3WDSs4WhAWegQICRAC&usg=AOvVaw1wy5qtrv9gkvuiCHK6S3fJ", "https://sidof.segob.gob.mx/notas/docFuente/5702241",
"https://sidof.segob.gob.mx/notas/docFuente/5702238",
"https://sidof.segob.gob.mx/notas/docFuente/5702239",
"https://sidof.segob.gob.mx/notas/docFuente/5702240",
"https://sidof.segob.gob.mx/notas/docFuente/5702103",
"https://sidof.segob.gob.mx/notas/docFuente/5702104",
"https://sidof.segob.gob.mx/notas/docFuente/5702102",
"https://sidof.segob.gob.mx/notas/docFuente/5702101",
"https://sidof.segob.gob.mx/notas/docFuente/5702023",
"https://sidof.segob.gob.mx/notas/docFuente/5702022",
"https://sidof.segob.gob.mx/notas/docFuente/5702021",
"https://sidof.segob.gob.mx/notas/docFuente/5702020",
"https://sidof.segob.gob.mx/notas/docFuente/5702019",
"https://sidof.segob.gob.mx/notas/docFuente/5701861",
"https://sidof.segob.gob.mx/notas/docFuente/5701860",
"https://sidof.segob.gob.mx/notas/docFuente/5701859",
"https://sidof.segob.gob.mx/notas/docFuente/5701863",
"https://sidof.segob.gob.mx/notas/docFuente/5701862",
"https://sidof.segob.gob.mx/notas/docFuente/5701748",
"https://sidof.segob.gob.mx/notas/docFuente/5701744",
"https://sidof.segob.gob.mx/notas/docFuente/5701745",
"https://sidof.segob.gob.mx/notas/docFuente/5701746",
"https://sidof.segob.gob.mx/notas/docFuente/5701747",
"https://sidof.segob.gob.mx/notas/docFuente/5701526",
"https://sidof.segob.gob.mx/notas/docFuente/5701522",
"https://sidof.segob.gob.mx/notas/docFuente/5701523",
"https://sidof.segob.gob.mx/notas/docFuente/5701524",
"https://sidof.segob.gob.mx/notas/docFuente/5701525",
"https://sidof.segob.gob.mx/notas/docFuente/5701380",
"https://sidof.segob.gob.mx/notas/docFuente/5701376",
"https://sidof.segob.gob.mx/notas/docFuente/5701379",
"https://sidof.segob.gob.mx/notas/docFuente/5701378",
"https://sidof.segob.gob.mx/notas/docFuente/5701377",
"https://sidof.segob.gob.mx/notas/docFuente/5689657",
"https://sidof.segob.gob.mx/notas/docFuente/5689454",
"https://sidof.segob.gob.mx/notas/docFuente/5685490",
"https://sidof.segob.gob.mx/notas/docFuente/5676505",
"https://sidof.segob.gob.mx/notas/docFuente/5695645",
"https://sidof.segob.gob.mx/notas/docFuente/5699645",
"https://sidof.segob.gob.mx/notas/docFuente/5695838",
"https://sidof.segob.gob.mx/notas/docFuente/5682911",
"https://sidof.segob.gob.mx/notas/docFuente/5677575",
"https://sidof.segob.gob.mx/notas/docFuente/5707442"
)
# Bucle para recorrer las URLs
contador23 <- 1
carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2023"
for (url in urls) {
# Aplicar la función a cada URL
datos <- extract_text(url)
# Guardar los datos en un archivo de texto
nombre_archivo <- file.path(carpeta, paste0("datos_2023_", contador23, ".txt"))# Nombre del archivo basado en el número en la URL
writeLines(datos, nombre_archivo)
contador23 <<- contador23 + 1
cat("Datos de", url, "guardados en", nombre_archivo, "\n")
}
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cnbv/articulos/inclusion-financiera-de-las-personas-con-discapacidad&sa=U&ved=2ahUKEwj2xNvXmKiCAxWWoWoFHSVfDfsQFnoECAcQAg&usg=AOvVaw3-njAWRpp5-zAOGcRqDvgj guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_1.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/conadis/es/articulos/dia-nacional-de-las-mujeres-con-discapacidad&sa=U&ved=2ahUKEwio1cCsmqiCAxVClmoFHWwNCYI4ChAWegQIAxAC&usg=AOvVaw341_FGNyyq6rzXxBw63nL1 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_2.txt
## Datos de https://www.gob.mx/tramites/ficha/pasaporte-ordinario-para-menores-de-edad-o-persona-con-discapacidad-mayor-de-edad-que-no-pueda-manifestar-su-voluntad-sin-presencia-del-tutor/SRE149 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_3.txt
## Datos de https://www.gob.mx/bienestar/prensa/san-luis-potosi-del-7-al-30-de-junio-registro-a-la-pension-universal-de-las-personas-con-discapacidad?idiom=es guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_4.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/conadis/articulos/listado-de-instituciones-de-atencion-a-personas-con-discapacidad-de-las-entidades-federativas-de-la-republica-mexicana&sa=U&ved=2ahUKEwjgrOr1mqiCAxU2lGoFHUXTA_A4FBAWegQIARAC&usg=AOvVaw0qXyr8HOU3tNYQqhCOFgsQ guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_5.txt
## Datos de https://www.gob.mx/conadis/que-hacemos guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_6.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/bienestar/prensa/secretaria-de-bienestar-y-gobierno-de-veracruz-concretan-universalidad-de-la-pension-para-el-bienestar-de-las-personas-con-discapacidad%3Fidiom%3Des&sa=U&ved=2ahUKEwif-Y2hm6iCAxX2kmoFHcZ3AOw4HhAWegQIABAC&usg=AOvVaw0vrRtevBD6iW1GS0_33rWc guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_7.txt
## Datos de https://www.gob.mx/tramites/ficha/pasaporte-para-mexicanos-mayores-de-sesenta-anos-y-personas-con-discapacidad-comprobada-con-vigencia-de-seis-tres-o-un-ano-expedido-en-las-oficinas-consulares-de-mexico-en-el-exterior/SRE573 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_8.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/bienestar/prensa/pension-para-bienestar-de-las-personas-con-discapacidad-sera-universal-en-san-luis-potosi-ariadna-montiel-y-ricardo-gallardo%3Fidiom%3Des&sa=U&ved=2ahUKEwjlsPbbm6iCAxW-lGoFHU06B9w4KBAWegQIABAC&usg=AOvVaw0_VADoT1sUPviwGF5WZghJ guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_9.txt
## Datos de https://www.gob.mx/pensionpersonascondiscapacidad guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_10.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/bienestar/prensa/en-veracruz-la-pension-para-el-bienestar-de-personas-con-discapacidad-ya-es-universal%3Fidiom%3Des&sa=U&ved=2ahUKEwjlsPbbm6iCAxW-lGoFHU06B9w4KBAWegQIARAC&usg=AOvVaw3eI1fA9mcK0yIOu-MqRYuf guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_11.txt
## Datos de https://www.gob.mx/bienestar/prensa/tamaulipas-del-7-al-30-de-junio-registro-a-la-pension-universal-de-las-personas-con-discapacidad?idiom=es guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_12.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/bienestar/prensa/del-2-al-31-de-octubre-registro-a-pension-universal-de-las-personas-con-discapacidad-en-estado-de-mexico%3Fidiom%3Des&sa=U&ved=2ahUKEwj906uznaiCAxVUlmoFHZAbCd44RhAWegQIABAC&usg=AOvVaw2BE8Jn9PMYXAnqIqY7SsiE guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_13.txt
## Datos de https://www.gob.mx/tramites/ficha/renovacion-de-pasaporte-ordinario-para-menores-de-edad-o-persona-con-discapacidad-mayor-de-edad-que-no-pueda-manifestar-su-voluntad-con-presencia-del-tutor/SRE150 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_14.txt
## Datos de https://www.gob.mx/bienestar/prensa/pension-para-personas-con-discapacidad-aumenta-a-dos-mil-950-pesos-bimestrales-ariadna-montiel?idiom=es guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_15.txt
## Datos de https://www.gob.mx/bienestar/prensa/quintana-roo-del-7-al-30-de-junio-registro-a-la-pension-universal-de-las-personas-con-discapacidad?idiom=es guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_16.txt
## Datos de https://www.gob.mx/bienestar/prensa/veracruz-del-26-de-junio-al-26-de-julio-registro-a-la-pension-universal-de-personas-con-discapacidad?idiom=es guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_17.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/segob/prensa/lenguaje-incluyente-genera-equidad-y-garantiza-derechos-de-ninas-ninos-y-adolescentes%3Fidiom%3Des&sa=U&ved=2ahUKEwjAtLrVnqiCAxUIlGoFHZv4BkcQFnoECAcQAg&usg=AOvVaw34ryYJyIF0QwoeLzEg7BlD guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_18.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/presidencia/es/articulos/version-estenografica-conferencia-de-prensa-del-presidente-andres-manuel-lopez-obrador-del-30-de-octubre-de-2023&sa=U&ved=2ahUKEwjAps7Kn6iCAxVPoWoFHYFnAwk4ChAWegQICRAB&usg=AOvVaw2_W1-o7gdAWElWENZknJMx guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_19.txt
## Datos de https://www.gob.mx/tramites/ficha/renovacion-de-licencia-de-conducir/Entidades5568 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_20.txt
## Datos de https://www.gob.mx/tramites/ficha/matricula-consular-de-alta-seguridad-para-menores-de-edad-y-discapacitados-ante-la-sre/SRE1208 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_21.txt
## Datos de https://www.gob.mx/cultura/prensa/vuelven-las-funciones-relajadas-del-inbal-con-el-programa-intervenciones-emergentes guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_22.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cultura/prensa/estudiantado-de-danza-clasica-y-contemporanea-realiza-practicas-escenicas-en-el-foro-cultural-coyoacanense%3Fidiom%3Des-MX&sa=U&ved=2ahUKEwi157qxo6iCAxWIlGoFHSKrDb04HhAWegQIBRAC&usg=AOvVaw3YAmz2hXA9TS7OoF-2eKYK guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_23.txt
## Datos de https://www.gob.mx/condusef/prensa/a-partir-de-este-2-de-mayo-la-condusef-atiende-nuevamente-en-sus-oficinas-sin-necesidad-de-agendar-una-cita?idiom=es guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_24.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/salud/articulos/dia-mundial-de-la-rehabilitacion-motriz&sa=U&ved=2ahUKEwjWu8vkpKiCAxUNlGoFHSu4B7w4UBAWegQIAxAC&usg=AOvVaw3695BcdFGPu1P82gN1Jx1Y guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_25.txt
## Datos de https://www.google.com/url?client=internal-element-cse&cx=001009928181730403690:azhagrfyx8s&q=https://www.gob.mx/cms/uploads/attachment/file/828751/MARINA_COMUNICADO_RN-6_015_CARRERA.pdf&sa=U&ved=2ahUKEwiqs_P7pKiCAxVdkmoFHZ3WDSs4WhAWegQICRAC&usg=AOvVaw1wy5qtrv9gkvuiCHK6S3fJ guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_26.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702241 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_27.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702238 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_28.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702239 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_29.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702240 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_30.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702103 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_31.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702104 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_32.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702102 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_33.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702101 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_34.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702023 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_35.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702022 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_36.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702021 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_37.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702020 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_38.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5702019 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_39.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701861 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_40.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701860 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_41.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701859 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_42.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701863 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_43.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701862 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_44.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701748 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_45.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701744 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_46.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701745 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_47.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701746 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_48.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701747 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_49.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701526 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_50.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701522 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_51.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701523 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_52.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701524 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_53.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701525 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_54.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701380 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_55.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701376 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_56.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701379 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_57.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701378 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_58.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5701377 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_59.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5689657 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_60.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5689454 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_61.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5685490 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_62.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5676505 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_63.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5695645 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_64.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5699645 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_65.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5695838 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_66.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5682911 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_67.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5677575 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_68.txt
## Datos de https://sidof.segob.gob.mx/notas/docFuente/5707442 guardados en /Users/abby/Documents/5to/CD II/Reto/Gob/2023/datos_2023_69.txt
##Limpieza Este código una serie de operaciones para limpiar archivos de texto en español ubicados en la carpeta “/Users/abby/Documents/5to/CD II/Gob/2023”. Inicialmente, se obtiene una lista de todos los archivos en esa carpeta. Luego, se utiliza la biblioteca tm para procesar y limpiar el texto. En un bucle, cada archivo se lee, convierte a minúsculas, elimina saltos de línea, puntuación y palabras vacías (stopwords) en español. El texto limpio se escribe de nuevo en archivos con el prefijo ‘limpio_’. Este proceso de limpieza es común en análisis de texto para preparar datos para análisis de texto o minería de texto.
file_list <- list.files(path = "/Users/abby/Documents/5to/CD II/Reto/Gob")
# Carga las bibliotecas necesarias
library(tm)
## Loading required package: NLP
library(SnowballC)
library(NLP)
# Define la ruta de la carpeta
ruta_carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob"
# Obtiene la lista de archivos .txt en la carpeta
archivos <- list.files(path = ruta_carpeta, pattern = "*.txt")
# Loop para leer y limpiar cada archivo
for (archivo in archivos) {
# Lee el archivo
texto <- readLines(paste0(ruta_carpeta, "/", archivo), encoding = "UTF-8")
# Convierte a UTF-8
texto <- iconv(texto, "latin1", "UTF-8")
# Convierte a minúsculas
texto <- tolower(texto)
# Elimina los saltos de línea
texto <- gsub("\n", " ", texto)
# Elimina la puntuación
texto <- removePunctuation(texto)
# Elimina las palabras vacías
texto <- removeWords(texto, stopwords("spanish"))
# Escribe el texto limpio de nuevo al archivo
writeLines(texto, paste0(ruta_carpeta, "/limpio_", archivo))
}
##Vectorización Este código realiza una serie de operaciones para cada año desde 2019 hasta 2023, con el propósito de leer y vectorizar el contenido de archivos de texto almacenados en diferentes carpetas correspondientes a cada año. Cada sección del código sigue una estructura similar: - Configuración de la Carpeta: Se especifica la ruta de la carpeta correspondiente a un año en particular (por ejemplo, “/Users/abby/Documents/5to/CD II/Reto/Gob/2019” para 2019).
Obtención de la Lista de Archivos: Se utiliza la función list.files para obtener una lista de archivos en la carpeta especificada.
Inicialización del Vector: Se inicializa un vector (texto_vectorizadoXX, donde XX representa el año) para almacenar el texto de los archivos.
Bucle para Leer y Vectorizar el Texto: Se utiliza un bucle for para recorrer cada archivo en la lista. Para cada archivo:
Se construye la ruta completa del archivo.Se lee el contenido del archivo de texto utilizando readLines. Se vectoriza el texto mediante la concatenación del contenido en el vector texto_vectorizadoXX.
#2019
ruta_carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2019"
# Lista de archivos en la carpeta que coinciden con el patrón
archivos19 <- list.files(path = ruta_carpeta)
# Inicializa un vector para almacenar el texto de los archivos
texto_vectorizado19 <- character(length(archivos19))
# Loop para leer y vectorizar el texto de cada archivo
for (i in 1:length(archivos19)) {
# Ruta completa del archivo
ruta_archivo <- file.path(ruta_carpeta, archivos19[i])
# Lee el archivo de texto
texto <- readLines(ruta_archivo)
# Vectoriza el texto
texto_vectorizado19[i] <- paste(texto, collapse = " ")
}
#2020
ruta_carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2020"
# Lista de archivos en la carpeta que coinciden con el patrón
archivos20 <- list.files(path = ruta_carpeta)
# Inicializa un vector para almacenar el texto de los archivos
texto_vectorizado20 <- character(length(archivos20))
# Loop para leer y vectorizar el texto de cada archivo
for (i in 1:length(archivos20)) {
# Ruta completa del archivo
ruta_archivo <- file.path(ruta_carpeta, archivos20[i])
# Lee el archivo de texto
texto <- readLines(ruta_archivo)
# Vectoriza el texto
texto_vectorizado20[i] <- paste(texto, collapse = " ")
}
#2021
ruta_carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2021"
# Lista de archivos en la carpeta que coinciden con el patrón
archivos21 <- list.files(path = ruta_carpeta)
# Inicializa un vector para almacenar el texto de los archivos
texto_vectorizado21 <- character(length(archivos21))
# Loop para leer y vectorizar el texto de cada archivo
for (i in 1:length(archivos21)) {
# Ruta completa del archivo
ruta_archivo <- file.path(ruta_carpeta, archivos21[i])
# Lee el archivo de texto
texto <- readLines(ruta_archivo)
# Vectoriza el texto
texto_vectorizado21[i] <- paste(texto, collapse = " ")
}
#2022
ruta_carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2022"
# Lista de archivos en la carpeta que coinciden con el patrón
archivos22 <- list.files(path = ruta_carpeta)
# Inicializa un vector para almacenar el texto de los archivos
texto_vectorizado22 <- character(length(archivos22))
# Loop para leer y vectorizar el texto de cada archivo
for (i in 1:length(archivos22)) {
# Ruta completa del archivo
ruta_archivo <- file.path(ruta_carpeta, archivos22[i])
# Lee el archivo de texto
texto <- readLines(ruta_archivo)
# Vectoriza el texto
texto_vectorizado22[i] <- paste(texto, collapse = " ")
}
#2023
ruta_carpeta <- "/Users/abby/Documents/5to/CD II/Reto/Gob/2023"
# Lista de archivos en la carpeta que coinciden con el patrón
archivos23 <- list.files(path = ruta_carpeta)
# Inicializa un vector para almacenar el texto de los archivos
texto_vectorizado23 <- character(length(archivos23))
# Loop para leer y vectorizar el texto de cada archivo
for (i in 1:length(archivos23)) {
# Ruta completa del archivo
ruta_archivo <- file.path(ruta_carpeta, archivos23[i])
# Lee el archivo de texto
texto <- readLines(ruta_archivo)
# Vectoriza el texto
texto_vectorizado23[i] <- paste(texto, collapse = " ")
}
##2019 ###Corpus y Nube Este código realiza un análisis de texto
sobre los comentarios vectorizados correspondientes al año 2019.
Primero, crea un corpus utilizando la función Corpus de la
biblioteca tm a partir del vector
texto_vectorizado19. Luego, genera una matriz
término-documento (DTM) utilizando DocumentTermMatrix para
contar la frecuencia de cada término en los comentarios. Posteriormente,
calcula el conteo total de términos y los ordena de manera descendente.
El código identifica y muestra los 25 términos más comunes en los
comentarios del año 2019. Luego, utiliza el paquete
wordcloud2 para visualizar estos términos comunes en una
nube de palabras, asignando colores específicos a una lista predefinida
de palabras relacionadas con discapacidades. Finalmente, guarda la nube
de palabras como un archivo HTML y la convierte a una imagen PNG
utilizando la función webshot, guardando la imagen en una
carpeta especificada. En resumen, este código ofrece un análisis visual
de los términos más frecuentes en los comentarios de 2019, con un
enfoque especial en palabras relacionadas con discapacidades.
library(tm)
library(NLP)
corpus19 <- Corpus(VectorSource(texto_vectorizado19))
# Creación DTM
dtm19 <- DocumentTermMatrix(corpus19)
#Conteo
conteo_total <- colSums(as.matrix(dtm19))
#Ordenar y mostrar los términos comúnes
terminos_comunes19<- sort(conteo_total, decreasing = TRUE)
#Identificación 25 términos más comúnes
head(terminos_comunes19, 25)
## a.c. del que los para asistencial
## 20856 6680 6671 6547 5919 5531
## las fundación con por i.a.p. centro
## 5149 4648 4109 3613 2794 1925
## desarrollo como nacional asociación méxico, una
## 1832 1416 1409 1346 1260 1217
## personas cultural dif artículo presente social
## 1204 1110 1090 1065 1032 1017
## estado
## 1015
# Carga el paquete wordcloud2
library(wordcloud2)
library(htmlwidgets)
# Define una lista de palabras
lista_palabras <- c("discapacidad", "discapacitado", "minusvalido", "diferentes", "enfermito", "capacidades")
palabras_eliminar <- c("milenio", "grupo")
corpus19 <- tm_map(corpus19, removeWords, palabras_eliminar)
## Warning in tm_map.SimpleCorpus(corpus19, removeWords, palabras_eliminar):
## transformation drops documents
# Define los colores para las palabras
colores <- ifelse(names(terminos_comunes19) %in% lista_palabras, "blue", "black")
# Crea la nube de palabras
nube <- wordcloud2(data.frame(word = names(terminos_comunes19), freq = terminos_comunes19),
color = colores, minSize = 2, size = 0.6)
nube
saveWidget(nube, file="nube.html", selfcontained = F)
nube
ruta_carpeta <- "/Users/abby/Documents/5to/CD II/Reto/nubes"
# Convierte el archivo HTML a PNG con webshot y lo guarda en la carpeta especificada
webshot::webshot("nube.html", file = paste0(ruta_carpeta, "/nube.png"))
###Análisis de sentimientos Este código realiza un análisis de
sentimientos sobre los comentarios procesados del año 2019. Comienza
cargando varias bibliotecas necesarias para el análisis, incluyendo
syuzhet, RColorBrewer, wordcloud,
y tm. A continuación, tokeniza el corpus de comentarios,
convierte el texto a minúsculas, elimina puntuación, números y palabras
vacías en español. Luego, se obtiene un vector de palabras y se realiza
un análisis de sentimientos utilizando el paquete syuzhet,
generando una tabla que muestra la cantidad de palabras asociadas a
diferentes emociones. A través de gráficos de barras, identifica las
palabras más frecuentes asociadas con sentimientos de tristeza,
felicidad, enfado, confianza, miedo y disgusto. Posteriormente, crea una
nube de palabras para visualizar las emociones presentes en los
comentarios. También realiza un análisis de sentimientos con el paquete
afinn, clasificando las palabras en positivas o negativas y
representando los resultados con una gráfica de barras apilada. Este
código proporciona una visión completa de los sentimientos expresados en
los comentarios del año 2019, permitiendo una comprensión más profunda
de la tonalidad emocional presente en el conjunto de datos.
# Carga los paquetes
library(syuzhet)
library(RColorBrewer)
library(wordcloud)
library(tm)
# Tokenización en el corpus
corpus_tokenizado <- tm_map(corpus19, content_transformer(tolower))
## Warning in tm_map.SimpleCorpus(corpus19, content_transformer(tolower)):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removePunctuation)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removePunctuation):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeNumbers)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeNumbers): transformation
## drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeWords, stopwords("spanish"))
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeWords,
## stopwords("spanish")): transformation drops documents
# Obtención del texto tokenizado como un vector
texto_palabras <- sapply(corpus_tokenizado, function(x) unlist(strsplit(as.character(x), " ")))
# Convertir a una lista
texto_palabras <- unlist(texto_palabras)
# Eliminar elementos vacíos
texto_palabras <- texto_palabras[texto_palabras != ""]
# Análisis de sentimientos
sentimientos_df <- get_nrc_sentiment(texto_vectorizado19, lang = "spanish")
head(sentimientos_df)
## anger anticipation disgust fear joy sadness surprise trust negative positive
## 1 2 8 2 4 4 3 4 17 9 27
## 2 6 7 4 7 4 8 4 18 12 28
## 3 0 18 3 6 12 6 7 26 14 38
## 4 2 6 2 3 4 5 1 17 9 22
## 5 6 9 4 7 6 8 5 21 13 33
## 6 6 7 4 7 4 8 4 17 12 28
# Gráfica de barras sentimientos
barplot(
colSums(prop.table(sentimientos_df[, 1:8])),
space = 0.2,
horiz = FALSE,
las = 1,
cex.names = 0.7,
col = brewer.pal(n = 8, name = "Set3"),
main = "Gobierno, 2019",
xlab = "emociones", ylab = NULL
)
palabras_trust <- texto_palabras[sentimientos_df$trust> 0]
palabras_trust_orden <- sort(table(unlist(palabras_trust)), decreasing = TRUE)
head(palabras_trust_orden, n = 12)
##
## ac asistencial fundación iap centro desarrollo
## 21012 5539 4696 2848 1967 1935
## social méxico nacional asociación dif personas
## 1861 1745 1681 1346 1283 1265
palabras_tristeza <- texto_palabras[sentimientos_df$sadness> 0]
palabras_tristeza_orden <- sort(table(unlist(palabras_tristeza)), decreasing = TRUE)
head(palabras_tristeza_orden, n = 12)
##
## ac asistencial fundación iap centro desarrollo
## 20380 5383 4570 2761 1906 1856
## social méxico nacional asociación dif personas
## 1805 1690 1640 1309 1249 1222
#El diccionario lee discapacidad como una palabra triste
#Analisis de sentimientos con Afinn: Positivo/negativo
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.1 ✔ purrr 1.0.1
## ✔ tibble 3.2.1 ✔ dplyr 1.1.4
## ✔ tidyr 1.3.0 ✔ forcats 0.5.2
## ✔ readr 2.1.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ ggplot2::annotate() masks NLP::annotate()
## ✖ dplyr::filter() masks stats::filter()
## ✖ readr::guess_encoding() masks rvest::guess_encoding()
## ✖ dplyr::lag() masks stats::lag()
library(tidytext)
library(tm)
library(lubridate)
##
## Attaching package: 'lubridate'
##
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(zoo)
##
## Attaching package: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(scales)
##
## Attaching package: 'scales'
##
## The following object is masked from 'package:purrr':
##
## discard
##
## The following object is masked from 'package:readr':
##
## col_factor
##
## The following object is masked from 'package:syuzhet':
##
## rescale
afinn <- read.csv("lexico_afinn.en.es.csv", stringsAsFactors = F, fileEncoding = "latin1") %>%
tibble::as_tibble()
texto_vectorizado19df <- as.data.frame(texto_vectorizado19)
texto_afinn <-
texto_vectorizado19df %>%
unnest_tokens(input = "texto_vectorizado19", output = "Palabra") %>%
inner_join(afinn, ., by = "Palabra") %>%
mutate(Tipo = ifelse(Puntuacion > 0, "Positiva", "Negativa"))
## Warning in inner_join(afinn, ., by = "Palabra"): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 3 of `x` matches multiple rows in `y`.
## ℹ Row 7938 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
tema_graf <-
theme_minimal() +
theme(text = element_text(family = "serif"),
panel.grid.minor = element_blank(),
strip.background = element_rect(fill = "#EBEBEB", colour = NA),
legend.position = "none",
legend.box.background = element_rect(fill = "#EBEBEB", colour = NA))
# Cuenta la cantidad de palabras positivas y negativas
conteo_sentimientos <- texto_afinn %>%
group_by(Tipo) %>%
summarise(n = n(), .groups = "keep")
conteo_sentimientos$dummy <- "sentimientos"
# Crea la gráfica de barras apilada
grafica_sentimientos <- ggplot(conteo_sentimientos, aes(x = dummy, y = n, fill = Tipo)) +
geom_bar(stat = "identity") +
labs(x = "Tipo de sentimiento", y = "Cantidad de palabras", title = "Análisis de sentimientos, Noticias 2019") +
tema_graf +
scale_fill_manual(values = c("firebrick3", "green"))
# Muestra la gráfica
print(grafica_sentimientos)
####Se replican los mismos pasos utilizados para los datos del 2019 a los datos del 2020, 2021, 2022, y 2023.
##2020 ###Corpus y nube
# Carga el paquete wordcloud2
library(wordcloud2)
library(htmlwidgets)
library(tm)
library(NLP)
# Remover caracteres especiales
texto_vectorizado20 <- iconv(texto_vectorizado20, to = "UTF-8-MAC", sub = " ")
# Crear el corpus y la matriz de términos del documento
corpus20 <- Corpus(VectorSource(texto_vectorizado20))
# Si tienes problemas con la codificación, también puedes intentar especificar la codificación aquí
# corpus20 <- Corpus(VectorSource(texto_vectorizado20, readerControl = list(language = "en", readerOptions = list(encoding = "UTF-8"))))
# Creación DTM
dtm20 <- DocumentTermMatrix(corpus20)
#Conteo
conteo_total <- colSums(as.matrix(dtm20))
#Ordenar y mostrar los términos comúnes
terminos_comunes20 <- sort(conteo_total, decreasing = TRUE)
# Define una lista de palabras
lista_palabras <- c("discapacidad", "discapacitado", "minusvalido", "diferentes", "enfermito", "capacidades")
# Define los colores para las palabras
colores <- ifelse(names(terminos_comunes20) %in% lista_palabras, "blue", "black")
# Crea la nube de palabras
nube <- wordcloud2(data.frame(word = names(terminos_comunes20), freq = terminos_comunes20),
color = colores, minSize = 2, size = 0.6)
nube
###Análisis de sentimientos
# Carga los paquetes
library(syuzhet)
library(RColorBrewer)
library(wordcloud)
library(tm)
# Tokenización en el corpus
corpus_tokenizado <- tm_map(corpus20, content_transformer(tolower))
## Warning in tm_map.SimpleCorpus(corpus20, content_transformer(tolower)):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removePunctuation)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removePunctuation):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeNumbers)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeNumbers): transformation
## drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeWords, stopwords("spanish"))
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeWords,
## stopwords("spanish")): transformation drops documents
# Obtención del texto tokenizado como un vector
texto_palabras <- sapply(corpus_tokenizado, function(x) unlist(strsplit(as.character(x), " ")))
# Convertir a una lista
texto_palabras <- unlist(texto_palabras)
# Eliminar elementos vacíos
texto_palabras <- texto_palabras[texto_palabras != ""]
# Análisis de sentimientos
sentimientos_df <- get_nrc_sentiment(texto_vectorizado20, lang = "spanish")
head(sentimientos_df)
## anger anticipation disgust fear joy sadness surprise trust negative positive
## 1 0 2 0 1 1 1 1 6 2 6
## 2 15 31 12 28 23 32 14 76 58 126
## 3 17 41 11 25 30 28 17 70 56 130
## 4 0 1 1 1 1 1 0 1 1 2
## 5 9 24 8 23 22 29 10 65 43 100
## 6 0 4 0 1 2 2 1 7 5 10
# Gráfica de barras sentimientos
barplot(
colSums(prop.table(sentimientos_df[, 1:8])),
space = 0.2,
horiz = FALSE,
las = 1,
cex.names = 0.7,
col = brewer.pal(n = 8, name = "Set3"),
main = "Gobierno, 2020",
xlab = "emociones", ylab = NULL
)
palabras_trust <- texto_palabras[sentimientos_df$trust> 0]
palabras_trust_orden <- sort(table(unlist(palabras_trust)), decreasing = TRUE)
head(palabras_trust_orden, n = 12)
##
## programa personas nacional mujeres salud secretarí
## 1143 1110 1052 998 972 907
## recursos discapacidad general atención así bienestar
## 868 844 687 666 646 626
palabras_tristeza <- texto_palabras[sentimientos_df$sadness> 0]
palabras_tristeza_orden <- sort(table(unlist(palabras_tristeza)), decreasing = TRUE)
head(palabras_tristeza_orden, n = 12)
##
## programa personas nacional mujeres salud secretarí
## 1143 1110 1052 998 972 907
## recursos discapacidad general atención así bienestar
## 868 844 687 666 646 626
palabras_anti <- texto_palabras[sentimientos_df$anticipation> 0]
palabras_anti_orden <- sort(table(unlist(palabras_anti)), decreasing = TRUE)
head(palabras_anti_orden, n = 12)
##
## programa personas nacional mujeres salud secretarí
## 1143 1110 1052 998 972 907
## recursos discapacidad general atención así bienestar
## 868 844 687 666 646 626
#El diccionario lee discapacidad como una palabra triste
#Analisis de sentimientos con Afinn: Positivo/negativo
library(tidyverse)
library(tidytext)
library(tm)
library(lubridate)
library(zoo)
library(scales)
afinn <- read.csv("lexico_afinn.en.es.csv", stringsAsFactors = F, fileEncoding = "latin1") %>%
tibble::as_tibble()
texto_vectorizado20df <- as.data.frame(texto_vectorizado20)
texto_afinn <-
texto_vectorizado20df %>%
unnest_tokens(input = "texto_vectorizado20", output = "Palabra") %>%
inner_join(afinn, ., by = "Palabra") %>%
mutate(Tipo = ifelse(Puntuacion > 0, "Positiva", "Negativa"))
## Warning in inner_join(afinn, ., by = "Palabra"): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 3 of `x` matches multiple rows in `y`.
## ℹ Row 117776 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
tema_graf <-
theme_minimal() +
theme(text = element_text(family = "serif"),
panel.grid.minor = element_blank(),
strip.background = element_rect(fill = "#EBEBEB", colour = NA),
legend.position = "none",
legend.box.background = element_rect(fill = "#EBEBEB", colour = NA))
# Cuenta la cantidad de palabras positivas y negativas
conteo_sentimientos <- texto_afinn %>%
group_by(Tipo) %>%
summarise(n = n(), .groups = "keep")
conteo_sentimientos$dummy <- "sentimientos"
# Crea la gráfica de barras apilada
grafica_sentimientos <- ggplot(conteo_sentimientos, aes(x = dummy, y = n, fill = Tipo)) +
geom_bar(stat = "identity") +
labs(x = "Tipo de sentimiento", y = "Cantidad de palabras", title = "Análisis de sentimientos, Noticias 2020") +
tema_graf +
scale_fill_manual(values = c("firebrick3", "green"))
# Muestra la gráfica
print(grafica_sentimientos)
##2021 ###Corpus y nube
# Carga el paquete wordcloud2
library(wordcloud2)
library(htmlwidgets)
library(tm)
library(NLP)
corpus21 <- Corpus(VectorSource(texto_vectorizado21))
# Creación DTM
dtm21 <- DocumentTermMatrix(corpus21)
#Conteo
conteo_total <- colSums(as.matrix(dtm21))
#Ordenar y mostrar los términos comúnes
terminos_comunes21 <- sort(conteo_total, decreasing = TRUE)
# Define una lista de palabras
lista_palabras <- c("discapacidad", "discapacitado", "minusvalido", "diferentes", "enfermito", "capacidades")
# Define los colores para las palabras
colores <- ifelse(names(terminos_comunes21) %in% lista_palabras, "blue", "black")
# Crea la nube de palabras
nube <- wordcloud2(data.frame(word = names(terminos_comunes21), freq = terminos_comunes21),
color = colores, minSize = 2, size = 0.6)
nube
###Análisis de sentimientos
# Carga los paquetes
library(syuzhet)
library(RColorBrewer)
library(wordcloud)
library(tm)
# Tokenización en el corpus
corpus_tokenizado <- tm_map(corpus21, content_transformer(tolower))
## Warning in tm_map.SimpleCorpus(corpus21, content_transformer(tolower)):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removePunctuation)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removePunctuation):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeNumbers)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeNumbers): transformation
## drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeWords, stopwords("spanish"))
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeWords,
## stopwords("spanish")): transformation drops documents
# Obtención del texto tokenizado como un vector
texto_palabras <- sapply(corpus_tokenizado, function(x) unlist(strsplit(as.character(x), " ")))
# Convertir a una lista
texto_palabras <- unlist(texto_palabras)
# Eliminar elementos vacíos
texto_palabras <- texto_palabras[texto_palabras != ""]
texto_palabras <- texto_palabras[nchar(texto_palabras) > 2]
# Análisis de sentimientos
sentimientos_df <- get_nrc_sentiment(texto_vectorizado21, lang = "spanish")
head(sentimientos_df)
## anger anticipation disgust fear joy sadness surprise trust negative positive
## 1 0 2 0 1 2 2 1 8 5 9
## 2 56 75 37 74 44 66 33 157 168 221
## 3 63 93 43 86 77 62 48 198 170 324
## 4 34 66 28 48 48 48 26 140 122 201
## 5 47 71 29 61 49 59 25 170 137 249
## 6 47 100 27 57 67 55 38 205 148 323
# Gráfica de barras sentimientos
barplot(
colSums(prop.table(sentimientos_df[, 1:8])),
space = 0.2,
horiz = FALSE,
las = 1,
cex.names = 0.7,
col = brewer.pal(n = 8, name = "Set3"),
main = "Gobierno, 2021",
xlab = "emociones", ylab = NULL
)
palabras_trust <- texto_palabras[sentimientos_df$trust> 0]
palabras_trust_orden <- sort(table(unlist(palabras_trust)), decreasing = TRUE)
head(palabras_trust_orden, n = 12)
##
## ley nacional artículo así personas presente general recursos
## 4728 3758 3523 3263 3096 3092 3080 3016
## social convenio servicios
## 2928 2803 2723 2629
palabras_tristeza <- texto_palabras[sentimientos_df$sadness> 0]
palabras_tristeza_orden <- sort(table(unlist(palabras_tristeza)), decreasing = TRUE)
head(palabras_tristeza_orden, n = 12)
##
## ley nacional artículo así personas presente general recursos
## 4728 3758 3523 3263 3096 3092 3080 3016
## social convenio servicios
## 2928 2803 2723 2629
palabras_anti <- texto_palabras[sentimientos_df$anticipation> 0]
palabras_anti_orden <- sort(table(unlist(palabras_anti)), decreasing = TRUE)
head(palabras_anti_orden, n = 12)
##
## ley nacional artículo así personas presente general recursos
## 4728 3758 3523 3263 3096 3092 3080 3016
## social convenio servicios
## 2928 2803 2723 2629
palabras_miedo <- texto_palabras[sentimientos_df$fear> 0]
palabras_miedo_orden <- sort(table(unlist(palabras_miedo)), decreasing = TRUE)
head(palabras_miedo_orden, n = 12)
##
## ley nacional artículo así personas presente general recursos
## 4728 3758 3523 3263 3096 3092 3080 3016
## social convenio servicios
## 2928 2803 2723 2629
#El diccionario lee discapacidad como una palabra triste
#Analisis de sentimientos con Afinn: Positivo/negativo
library(tidyverse)
library(tidytext)
library(tm)
library(lubridate)
library(zoo)
library(scales)
afinn <- read.csv("lexico_afinn.en.es.csv", stringsAsFactors = F, fileEncoding = "latin1") %>%
tibble::as_tibble()
texto_vectorizado21df <- as.data.frame(texto_vectorizado21)
texto_afinn <-
texto_vectorizado21df %>%
unnest_tokens(input = "texto_vectorizado21", output = "Palabra") %>%
inner_join(afinn, ., by = "Palabra") %>%
mutate(Tipo = ifelse(Puntuacion > 0, "Positiva", "Negativa"))
## Warning in inner_join(afinn, ., by = "Palabra"): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 3 of `x` matches multiple rows in `y`.
## ℹ Row 671359 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
tema_graf <-
theme_minimal() +
theme(text = element_text(family = "serif"),
panel.grid.minor = element_blank(),
strip.background = element_rect(fill = "#EBEBEB", colour = NA),
legend.position = "none",
legend.box.background = element_rect(fill = "#EBEBEB", colour = NA))
# Cuenta la cantidad de palabras positivas y negativas
conteo_sentimientos <- texto_afinn %>%
group_by(Tipo) %>%
summarise(n = n(), .groups = "keep")
conteo_sentimientos$dummy <- "sentimientos"
# Crea la gráfica de barras apilada
grafica_sentimientos <- ggplot(conteo_sentimientos, aes(x = dummy, y = n, fill = Tipo)) +
geom_bar(stat = "identity") +
labs(x = "Tipo de sentimiento", y = "Cantidad de palabras", title = "Análisis de sentimientos, Noticias 2021") +
tema_graf +
scale_fill_manual(values = c("firebrick3", "green"))
# Muestra la gráfica
print(grafica_sentimientos)
##2022 ###Corpus y nube
# Carga el paquete wordcloud2
library(wordcloud2)
library(htmlwidgets)
library(tm)
library(NLP)
corpus22 <- Corpus(VectorSource(texto_vectorizado22))
# Creación DTM
dtm22 <- DocumentTermMatrix(corpus22)
#Conteo
conteo_total <- colSums(as.matrix(dtm22))
#Ordenar y mostrar los términos comúnes
terminos_comunes22 <- sort(conteo_total, decreasing = TRUE)
# Define una lista de palabras
lista_palabras <- c("discapacidad", "discapacitado", "minusvalido", "diferentes", "enfermito", "capacidades")
# Define los colores para las palabras
colores <- ifelse(names(terminos_comunes22) %in% lista_palabras, "blue", "black")
# Crea la nube de palabras
nube <- wordcloud2(data.frame(word = names(terminos_comunes22), freq = terminos_comunes22),
color = colores, minSize = 2, size = 0.6)
nube
###Análisis de sentimientos
# Carga los paquetes
library(syuzhet)
library(RColorBrewer)
library(wordcloud)
library(tm)
# Tokenización en el corpus
corpus_tokenizado <- tm_map(corpus22, content_transformer(tolower))
## Warning in tm_map.SimpleCorpus(corpus22, content_transformer(tolower)):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removePunctuation)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removePunctuation):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeNumbers)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeNumbers): transformation
## drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeWords, stopwords("spanish"))
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeWords,
## stopwords("spanish")): transformation drops documents
# Obtención del texto tokenizado como un vector
texto_palabras <- sapply(corpus_tokenizado, function(x) unlist(strsplit(as.character(x), " ")))
# Convertir a una lista
texto_palabras <- unlist(texto_palabras)
# Eliminar elementos vacíos
texto_palabras <- texto_palabras[texto_palabras != ""]
texto_palabras <- texto_palabras[nchar(texto_palabras) > 2]
# Análisis de sentimientos
sentimientos_df <- get_nrc_sentiment(texto_vectorizado22, lang = "spanish")
head(sentimientos_df)
## anger anticipation disgust fear joy sadness surprise trust negative positive
## 1 28 68 14 44 57 32 30 118 87 186
## 2 76 118 55 99 80 93 48 243 228 360
## 3 34 70 32 58 44 43 24 167 124 254
## 4 65 115 35 86 71 80 56 206 203 337
## 5 33 70 29 50 33 43 23 127 130 203
## 6 50 75 30 54 56 54 32 172 131 245
# Gráfica de barras sentimientos
barplot(
colSums(prop.table(sentimientos_df[, 1:8])),
space = 0.2,
horiz = FALSE,
las = 1,
cex.names = 0.7,
col = brewer.pal(n = 8, name = "Set3"),
main = "Gobierno, 2022",
xlab = "emociones", ylab = NULL
)
# Función para obtener las palabras únicas y sus frecuencias para un sentimiento específico
obtener_palabras_sentimiento <- function(sentimiento, texto_palabras, sentimientos_df) {
palabras_sentimiento <- texto_palabras[sentimientos_df[, sentimiento] > 0]
palabras_sentimiento_orden <- sort(table(palabras_sentimiento), decreasing = TRUE)
return(palabras_sentimiento_orden)
}
# Obtener palabras únicas y frecuencias para cada sentimiento
palabras_trust_orden <- obtener_palabras_sentimiento("trust", texto_palabras, sentimientos_df)
palabras_tristeza_orden <- obtener_palabras_sentimiento("sadness", texto_palabras, sentimientos_df)
palabras_anti_orden <- obtener_palabras_sentimiento("anticipation", texto_palabras, sentimientos_df)
# Mostrar las palabras más frecuentes para cada sentimiento
head(palabras_trust_orden, n = 12)
## palabras_sentimiento
## debe ser ley señales procede caso
## 1960 1832 1823 1807 1415 1376 1317 1307
## artículo tabla deben proyecto
## 1204 1190 1164 1084
head(palabras_tristeza_orden, n = 12)
## palabras_sentimiento
## debe ser ley señales procede caso
## 1960 1832 1823 1807 1415 1376 1317 1307
## artículo tabla deben proyecto
## 1204 1190 1164 1084
head(palabras_anti_orden, n = 12)
## palabras_sentimiento
## debe ser ley señales procede caso
## 1960 1832 1823 1807 1415 1376 1317 1307
## artículo tabla deben proyecto
## 1204 1190 1164 1084
#El diccionario lee discapacidad como una palabra triste
library(tidyverse)
library(tidytext)
library(tm)
library(lubridate)
library(zoo)
library(scales)
afinn <- read.csv("lexico_afinn.en.es.csv", stringsAsFactors = F, fileEncoding = "latin1") %>%
tibble::as_tibble()
texto_vectorizado22df <- as.data.frame(texto_vectorizado22)
texto_afinn <-
texto_vectorizado22df %>%
unnest_tokens(input = "texto_vectorizado22", output = "Palabra") %>%
inner_join(afinn, ., by = "Palabra") %>%
mutate(Tipo = ifelse(Puntuacion > 0, "Positiva", "Negativa"))
## Warning in inner_join(afinn, ., by = "Palabra"): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 11 of `x` matches multiple rows in `y`.
## ℹ Row 91473 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
tema_graf <-
theme_minimal() +
theme(text = element_text(family = "serif"),
panel.grid.minor = element_blank(),
strip.background = element_rect(fill = "#EBEBEB", colour = NA),
legend.position = "none",
legend.box.background = element_rect(fill = "#EBEBEB", colour = NA))
# Cuenta la cantidad de palabras positivas y negativas
conteo_sentimientos <- texto_afinn %>%
group_by(Tipo) %>%
summarise(n = n(), .groups = "keep")
conteo_sentimientos$dummy <- "sentimientos"
# Crea la gráfica de barras apilada
grafica_sentimientos <- ggplot(conteo_sentimientos, aes(x = dummy, y = n, fill = Tipo)) +
geom_bar(stat = "identity") +
labs(x = "Tipo de sentimiento", y = "Cantidad de palabras", title = "Análisis de sentimientos, Noticias 2022") +
tema_graf +
scale_fill_manual(values = c("firebrick3", "green"))
# Muestra la gráfica
print(grafica_sentimientos)
##2023 ###Corpus y nube
# Carga el paquete wordcloud2
library(wordcloud2)
library(htmlwidgets)
library(tm)
library(NLP)
texto_vectorizado23 <- iconv(texto_vectorizado23, to = "UTF-8", sub = NA)
texto_vectorizado23 <- iconv(texto_vectorizado23, to = "ASCII//TRANSLIT")
corpus23 <- Corpus(VectorSource(texto_vectorizado23))
# Creación DTM
dtm23 <- DocumentTermMatrix(corpus23)
#Conteo
conteo_total <- colSums(as.matrix(dtm23))
#Ordenar y mostrar los términos comúnes
terminos_comunes23 <- sort(conteo_total, decreasing = TRUE)
# Define una lista de palabras
lista_palabras <- c("discapacidad", "discapacitado", "minusvalido", "diferentes", "enfermito", "capacidades")
# Define los colores para las palabras
colores <- ifelse(names(terminos_comunes23) %in% lista_palabras, "blue", "black")
# Crea la nube de palabras
nube <- wordcloud2(data.frame(word = names(terminos_comunes23), freq = terminos_comunes23),
color = colores, minSize = 2, size = 0.6)
nube
###Análisis de sentimientos
# Carga los paquetes
library(syuzhet)
library(RColorBrewer)
library(wordcloud)
library(tm)
# Tokenización en el corpus
corpus_tokenizado <- tm_map(corpus23, content_transformer(tolower))
## Warning in tm_map.SimpleCorpus(corpus23, content_transformer(tolower)):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removePunctuation)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removePunctuation):
## transformation drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeNumbers)
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeNumbers): transformation
## drops documents
corpus_tokenizado <- tm_map(corpus_tokenizado, removeWords, stopwords("spanish"))
## Warning in tm_map.SimpleCorpus(corpus_tokenizado, removeWords,
## stopwords("spanish")): transformation drops documents
# Obtención del texto tokenizado como un vector
texto_palabras <- sapply(corpus_tokenizado, function(x) unlist(strsplit(as.character(x), " ")))
# Convertir a una lista
texto_palabras <- unlist(texto_palabras)
# Eliminar elementos vacíos
texto_palabras <- texto_palabras[texto_palabras != ""]
texto_palabras <- texto_palabras[nchar(texto_palabras) > 2]
# Análisis de sentimientos
sentimientos_df <- get_nrc_sentiment(texto_vectorizado23, lang = "spanish")
head(sentimientos_df)
## anger anticipation disgust fear joy sadness surprise trust negative positive
## 1 0 5 0 1 4 5 2 13 9 20
## 2 2 1 1 2 0 4 0 1 7 2
## 3 1 6 1 3 7 3 3 19 6 19
## 4 2 5 0 5 3 5 1 19 12 19
## 5 2 4 0 5 3 3 1 20 10 19
## 6 3 11 5 9 7 10 4 28 21 39
# Gráfica de barras sentimientos
barplot(
colSums(prop.table(sentimientos_df[, 1:8])),
space = 0.2,
horiz = FALSE,
las = 1,
cex.names = 0.7,
col = brewer.pal(n = 8, name = "Set3"),
main = "Gobierno, 2023",
xlab = "emociones", ylab = NULL
)
# Función para obtener las palabras únicas y sus frecuencias para un sentimiento específico
obtener_palabras_sentimiento <- function(sentimiento, texto_palabras, sentimientos_df) {
palabras_sentimiento <- texto_palabras[sentimientos_df[, sentimiento] > 0]
palabras_sentimiento_orden <- sort(table(palabras_sentimiento), decreasing = TRUE)
return(palabras_sentimiento_orden)
}
# Obtener palabras únicas y frecuencias para cada sentimiento
palabras_trust_orden <- obtener_palabras_sentimiento("trust", texto_palabras, sentimientos_df)
palabras_tristeza_orden <- obtener_palabras_sentimiento("sadness", texto_palabras, sentimientos_df)
palabras_anti_orden <- obtener_palabras_sentimiento("anticipation", texto_palabras, sentimientos_df)
# Mostrar las palabras más frecuentes para cada sentimiento
head(palabras_trust_orden, n = 12)
## palabras_sentimiento
## incluye convenio dif servicio nacional
## 1497 1458 1368 1364 1357
## presente mantenimiento suministro social discapacidad
## 1316 1202 1194 1184 1084
## obra recursos
## 1076 1047
head(palabras_tristeza_orden, n = 12)
## palabras_sentimiento
## incluye convenio dif servicio nacional
## 1497 1458 1368 1364 1357
## presente mantenimiento suministro social discapacidad
## 1316 1202 1194 1184 1084
## obra recursos
## 1076 1047
head(palabras_anti_orden, n = 12)
## palabras_sentimiento
## incluye convenio dif servicio nacional
## 1497 1458 1368 1364 1357
## presente mantenimiento suministro social discapacidad
## 1316 1202 1194 1184 1084
## obra recursos
## 1076 1047
#El diccionario lee discapacidad como una palabra triste
library(tidyverse)
library(tidytext)
library(tm)
library(lubridate)
library(zoo)
library(scales)
afinn <- read.csv("lexico_afinn.en.es.csv", stringsAsFactors = F, fileEncoding = "latin1") %>%
tibble::as_tibble()
texto_vectorizado23df <- as.data.frame(texto_vectorizado23)
texto_afinn <-
texto_vectorizado23df %>%
unnest_tokens(input = "texto_vectorizado23", output = "Palabra") %>%
inner_join(afinn, ., by = "Palabra") %>%
mutate(Tipo = ifelse(Puntuacion > 0, "Positiva", "Negativa"))
## Warning in inner_join(afinn, ., by = "Palabra"): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 11 of `x` matches multiple rows in `y`.
## ℹ Row 418908 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
tema_graf <-
theme_minimal() +
theme(text = element_text(family = "serif"),
panel.grid.minor = element_blank(),
strip.background = element_rect(fill = "#EBEBEB", colour = NA),
legend.position = "none",
legend.box.background = element_rect(fill = "#EBEBEB", colour = NA))
# Cuenta la cantidad de palabras positivas y negativas
conteo_sentimientos <- texto_afinn %>%
group_by(Tipo) %>%
summarise(n = n(), .groups = "keep")
conteo_sentimientos$dummy <- "sentimientos"
# Crea la gráfica de barras apilada
grafica_sentimientos <- ggplot(conteo_sentimientos, aes(x = dummy, y = n, fill = Tipo)) +
geom_bar(stat = "identity") +
labs(x = "Tipo de sentimiento", y = "Cantidad de palabras", title = "Análisis de sentimientos, Noticias 2023") +
tema_graf +
scale_fill_manual(values = c("firebrick3", "green"))
# Muestra la gráfica
print(grafica_sentimientos)