Código utilizado para hacer scraping de datos sobre Gran Hermano Argentina en Twitter

knitr::opts_chunk$set(echo = TRUE)

## Importo librerías
library(rtweet) 
library(tokenizers)
library(dplyr) 
library(tidyverse)
library(stringr)
library(writexl)


## Selecciono los hashtags que voy a buscar
hashtags<-c("#GranHermano", "#GH2022", "#GH22", "#GH2023", "#GH23")
hashtags <- paste(hashtags, collapse=" OR ")
#No publico la parte donde importo los tweets porque tiene mi token. Pero el código es el siguiente:

auth <- rtweet_app("completo con el token")

tw <- search_tweets(hashtags, n=100000, include_rts = FALSE, retryonratelimit = TRUE, token = auth)
## Elimino tildes y paso todos los tweets a minúscula en una nueva columna
tw$copia_text<-chartr("áéíóú", "aeiou", tolower(tw$text))
## Tokenizo la nueva columna para poder extraer los nombres dentro del tweet
tw$copia_text<-tokenize_words(tw$copia_text)

## Creo una variable con los nombres y apodos de todos los participantes que voy a buscr dentro del tweet
participantes<-c("romina", "alfa", "julieta", "marcos", "primo", "nacho", "daniela", "pestañela", "vengañela", "camila", "ariel", "tora", "lucila", "frodo", "agustin", "holder", "martina", "mora", "maxi", "alexis", "conejo", "cone", "coti", "cata", "juan", "thiago", "juliana", "tini", "maria laura", "constanza", "romi", "big ari", "ari")

## Para poner los nombres de los participantes en una nueva columna, pongo la posición de los nombres y apodos de los participantes haciendo match entre la variable participantes y el contenido del tweet tokenizado 
for (i in seq_along(tw$copia_text)){
  #pongo la posición del valor mencionado de participantes
  tw$nombres[[i]]<-ifelse(tw$copia_text[[i]] %in% participantes, 
                         match(tw$copia_text[[i]],participantes),
                         "")
  #elimino output de else
  tw$nombres[[i]]<- tw$nombres[[i]][!tw$nombres[[i]]==""]
  #elimino nombres duplicados
  tw$nombres[[i]]<-tw$nombres[[i]][!duplicated(tw$nombres[[i]])]
}

## Creo la variable con las posiciones y los nombres correspondientes
reemplazos <- c(
  "33"="Ariel",
  "32"= "Ariel",
  "31"="Romina",
  "30"="Coti",  
  "29"="Cata", 
  "28"="Juliana", 
  "27"="Juliana",
  "26"="Thiago", 
  "25"="Juan", 
  "24"="Cata", 
  "23"="Coti", 
  "22"="Conejo", 
  "21"="Conejo", 
  "20"="Conejo", 
  "19"="Maxi", 
  "18"="Mora", 
  "17"="Martina", 
  "16"="Holder", 
  "15"="Agustin", 
  "14"="Agustin", 
  "13"="Tora", 
  "12"="Tora", 
  "11"="Ariel", 
  "10"="Camila",
  "9"="Daniela",
  "8"="Daniela",
  "7"="Daniela",   
  "6"="Nacho", 
  "5"="Marcos",
  "4"="Marcos",
  "3"="Julieta",
  "2"="Alfa",
  "1"="Romina")

## Reemplazo la posición de los apodos con los nombres correspondientes
tw$nombres <- str_replace_all(tw$nombres, reemplazos)

## Elimino caracteres de los nombres
tw$nombres <- str_replace_all(tw$nombres, "c\\(", "")
tw$nombres <- str_replace_all(tw$nombres, "\\)", "")
tw$nombres <- str_replace_all(tw$nombres, ",", " ")

## Pongo NA donde no hay nombres de participantes 
tw$nombres[tw$nombres=="character(0"]<-NA
tw$nombres <- str_replace_all(tw$nombres, '\\"', "")

## Elimino columnas que no voy a usar
tw<-tw[,-21:-44]
tw<-tw[,-5:-18]
tw<-tw[,-3]
## Exporto los datos en excel

write_xlsx(tw, paste("C:\\Users\\Julieta Coll\\Documents\\Portfolio\\tweets_gh", Sys.Date(), ".xlsx"))