TweetScraperR: una herramienta para la recolección de tweets en la era post-API

Author

Agustín Nieto (INHUS-CONICET/UNMdP)

Web Scraping en un escenario post-API

Las recientes restricciones en el acceso a las APIs de redes sociales han afectado profundamente a la investigación digital y las ciencias sociales computacionales. Plataformas como Twitter y Facebook han reducido o eliminado el acceso gratuito a sus APIs, lo que obliga a los investigadores a encontrar nuevas formas de acceder a los datos. En este contexto, surge la “era post-API”, donde los estudios sociales se ven limitados por la disponibilidad de datos y los altos costos para obtenerlos.


El renacer del Web Scraping

El web scraping, una técnica tradicionalmente utilizada para extraer datos directamente desde sitios web, ha ganado relevancia como solución alternativa frente a las restricciones de las APIs. Aunque históricamente subestimado en la investigación social, el scraping ha demostrado ser un recurso esencial para recolectar datos tanto en tiempo real como históricos de plataformas de redes sociales.

Con las APIs restringidas, el scraping ofrece a lxs investigadorxs una forma accesible y flexible para continuar obteniendo datos relevantes para el análisis social. Sin embargo, también presenta desafíos, tanto éticos como legales, en cuanto a la privacidad de lxs usuarixs y el cumplimiento de los términos de servicio de las plataformas.


Desafíos de la era post-API

El principal desafío que plantea la era post-API es el acceso a los datos. Las APIs, que antes permitían a lxs investigadorxs obtener información estructurada y autorizada de las redes sociales, ahora exigen pagos considerables o han reducido sus funcionalidades gratuitas. Esto ha creado una barrera de entrada para los estudios de datos sociales a gran escala, particularmente para aquellos con recursos limitados.

En este nuevo contexto, el scraping se ha posicionado como una alternativa viable, pero no sin sus dificultades. La necesidad de cumplir con las normativas de privacidad y evitar el bloqueo por parte de las plataformas requiere de enfoques más sofisticados.


TweetScraperR

TweetScraperR es una herramienta diseñada para facilitar la recolección de datos de Twitter sin depender de su API oficial. Frente a las restricciones impuestas, TweetScraperR permite a lxs investigadorxs acceder a tweets utilizando scraping para obtener datos en tiempo real e históricos, lo que permite la continuidad de las investigaciones de fenómenos sociales digitales sin los costos prohibitivos de las APIs, adaptándose a las nuevas condiciones impuestas por la era post-API.

getTweetsHistoricalHashtag

Esta función recupera datos de los tweets que contienen un hashtag específico en Twitter, basándose en un rango de fechas especificado. Utiliza autenticación en Twitter mediante el nombre de usuarix y la contraseña proporcionados, o los valores predeterminados de las variables de entorno del sistema. Después de autenticar al usuarix, la función realiza una búsqueda de tweets que contienen el hashtag especificado dentro del rango de fechas definido por los parámetros since y until. Las URLs de los tweets encontrados se recogen hasta alcanzar el número máximo de tweets especificado por el parámetro n_tweets o hasta que no se encuentren nuevos tweets en varios intentos consecutivos. Los resultados se guardan en un archivo con formato .rds en el directorio especificado por el parámetro dir.

library(TweetScraperR)

getTweetsHistoricalHashtag(
  hashtag = "#8M",
  timeout = 10,
  n_tweets = 100,
  since = "2018-03-07",
  until = "2018-03-09",
  xuser = Sys.getenv("USER"),
  xpass = Sys.getenv("PASS"),
  dir = getwd()
)
Inició la recolección de tweets.
Tweets recolectados: 0
Tweets recolectados: 11
Tweets recolectados: 21
Tweets recolectados: 30
Tweets recolectados: 39
Tweets recolectados: 50
Tweets recolectados: 60
Tweets recolectados: 72
Tweets recolectados: 82
Tweets recolectados: 91
Tweets recolectados: 99
Tweets recolectados: 113
Finalizó la recolección de tweets.
Procesando datos...
Datos procesados y guardados.
Tweets únicos recolectados: 103 
# A tibble: 103 × 6
   art_html  fecha               user            tweet url   fecha_captura      
   <list>    <dttm>              <chr>           <chr> <chr> <dttm>             
 1 <chr [1]> 2018-03-08 23:59:58 @aizaguirref    "\nD… http… 2024-09-25 13:26:06
 2 <chr [1]> 2018-03-08 23:59:58 @flor_zita_     "\nA… http… 2024-09-25 13:26:06
 3 <chr [1]> 2018-03-08 23:59:58 @pabloruizpress "\nE… http… 2024-09-25 13:26:06
 4 <chr [1]> 2018-03-08 23:59:55 @Carademora     "\nL… http… 2024-09-25 13:26:06
 5 <chr [1]> 2018-03-08 23:59:55 @auroriparrilla "\nD… http… 2024-09-25 13:26:06
 6 <chr [1]> 2018-03-08 23:59:54 @GuidoToselli   "\nM… http… 2024-09-25 13:26:06
 7 <chr [1]> 2018-03-08 23:59:53 @AMECUM_        "\nE… http… 2024-09-25 13:26:06
 8 <chr [1]> 2018-03-08 23:59:51 @bossa_ca       "\nE… http… 2024-09-25 13:26:06
 9 <chr [1]> 2018-03-08 23:59:50 @maqui13        "\nE… http… 2024-09-25 13:26:06
10 <chr [1]> 2018-03-08 23:59:48 @ToniCasado     "\nU… http… 2024-09-25 13:26:06
# ℹ 93 more rows

getTweetsHistoricalSearch

Esta función permite recuperar tweets históricos de Twitter que coinciden con una búsqueda específica. Puedes especificar términos de búsqueda relevantes para tus necesidades de análisis, y la función recuperará tweets antiguos que coincidan con esos criterios. Esto es útil para investigaciones históricas, análisis de tendencias a lo largo del tiempo y cualquier otro análisis que requiera acceso a datos históricos de Twitter.

getTweetsHistoricalSearch(
  search = "corrupción",
  timeout = 10,
  n_tweets = 100,
  since = "2018-10-26",
  until = "2018-11-30",
  xuser = Sys.getenv("USER"),
  xpass = Sys.getenv("PASS"),
  dir = getwd()
)
Inició la recolección de tweets.
Tweets recolectados: 9
Tweets recolectados: 42
Tweets recolectados: 60
Tweets recolectados: 78
Tweets recolectados: 95
Tweets recolectados: 104
Finalizó la recolección de tweets.
Procesando datos...
Datos procesados y guardados.
Tweets únicos recolectados: 94 
# A tibble: 94 × 6
   art_html  fecha               user           tweet  url   fecha_captura      
   <list>    <dttm>              <chr>          <chr>  <chr> <dttm>             
 1 <chr [1]> 2018-11-29 23:59:56 @RobPeFer      "\nLe… http… 2024-09-25 13:27:33
 2 <chr [1]> 2018-11-29 23:59:50 @drawerin      "\nEx… http… 2024-09-25 13:27:33
 3 <chr [1]> 2018-11-29 23:59:47 @rojgalo       "\nIM… http… 2024-09-25 13:27:33
 4 <chr [1]> 2018-11-29 23:59:46 @ClemenColan   "\n@R… http… 2024-09-25 13:27:33
 5 <chr [1]> 2018-11-29 23:59:38 @murdocknqn    "\nLa… http… 2024-09-25 13:27:33
 6 <chr [1]> 2018-11-29 23:59:33 @IanHRAGE      "\nMe… http… 2024-09-25 13:27:33
 7 <chr [1]> 2018-11-29 23:59:30 @FatiiParedes  "\nNo… http… 2024-09-25 13:27:33
 8 <chr [1]> 2018-11-29 23:59:24 @Mercy48866347 "\n@M… http… 2024-09-25 13:27:33
 9 <chr [1]> 2018-11-29 23:59:24 @yiselmendoza8 "\nSo… http… 2024-09-25 13:27:33
10 <chr [1]> 2018-11-29 23:59:21 @canelisa21    "\nPe… http… 2024-09-25 13:27:33
# ℹ 84 more rows

getTweetsSearchStreaming

Esta función recupera tweets basados en una consulta de búsqueda en tiempo real en Twitter. Utiliza autenticación en Twitter mediante el nombre de usuario y la contraseña proporcionados, o los valores predeterminados de las variables de entorno del sistema. Después de autenticar al usuario, la función realiza la búsqueda especificada por el parámetro search y recoge las URLs de los tweets que coinciden con la consulta. El proceso de recolección de URLs se ejecuta en un bucle que continúa hasta que se alcanza el número máximo de URLs especificado por el parámetro n_tweets o hasta que se realizan varios intentos consecutivos sin encontrar nuevos tweets. Los resultados se guardan en un archivo .rds en el directorio especificado por el parámetro dir.

getTweetsSearchStreaming(
  search = "Pedro Sánchez",
  timeout = 10,
  n_tweets = 20,
  xuser = Sys.getenv("USER"),
  xpass = Sys.getenv("PASS"),
  dir = getwd()
)
Inició la recolección de tweets.
Tweets recolectados: 8
Tweets recolectados: 16
Tweets recolectados: 16
Tweets recolectados: 24
Finalizó la recolección de tweets.
Datos procesados y guardados.
Tweets únicos recolectados: 11 
# A tibble: 11 × 6
   art_html  fecha               user            tweet url   fecha_captura      
   <list>    <dttm>              <chr>           <chr> <chr> <dttm>             
 1 <chr [1]> 2024-09-25 16:26:30 @ElLocoSoyYo_   "Cre… http… 2024-09-25 13:28:38
 2 <chr [1]> 2024-09-25 16:26:13 @jbaptzorg      "\nP… http… 2024-09-25 13:28:38
 3 <chr [1]> 2024-09-25 16:26:04 @Luciorm        "\nD… http… 2024-09-25 13:28:38
 4 <chr [1]> 2024-09-25 16:25:12 @diariopinion   "\n#… http… 2024-09-25 13:28:38
 5 <chr [1]> 2024-09-25 16:24:56 @Charcutero_El  "\nE… http… 2024-09-25 13:28:38
 6 <chr [1]> 2024-09-25 16:24:52 @EsradioA       "\nV… http… 2024-09-25 13:28:38
 7 <chr [1]> 2024-09-25 16:24:23 @GomezPumar     "\nB… http… 2024-09-25 13:28:39
 8 <chr [1]> 2024-09-25 16:24:18 @carloscrortwit "\nR… http… 2024-09-25 13:28:39
 9 <chr [1]> 2024-09-25 16:27:50 @carlolanuit    "\nh… http… 2024-09-25 13:28:39
10 <chr [1]> 2024-09-25 16:28:24 @GPPAsturias    "\nM… http… 2024-09-25 13:28:39
11 <chr [1]> 2024-09-25 16:28:12 @Ojos_De_Gata_  "\nE… http… 2024-09-25 13:28:39

getTweetsData

Esta función permite recuperar y procesar datos de tweets a partir de un vector de URLs de tweets proporcionadas. Utilizando las credenciales de unx usuarix de Twitter, la función realiza la autenticación y extrae información detallada de cada tweet, como la fecha, el nombre de usuarix, el texto del tweet, las respuestas, reposts, me gusta, URLs asociadas, y otros metadatos. La función también maneja tweets borrados y errores durante el proceso de recolección. Finalmente, los datos recopilados se guardan en un archivo .rds en el directorio especificado.

urls <- readRDS("./historical_hashtag_8M_2024_09_24_20_11_19.rds")
getTweetsData(
  urls_tweets = urls$url[1:20],
  xuser = Sys.getenv("USER"),
  xpass = Sys.getenv("PASS"),
  dir = getwd()
)
Inicio de la recolección de datos.
Datos recolectados del tweet: KevinStapleto19/status/1049405078354968577 1 de 20
Datos recolectados del tweet: fnando71/status/1049403520728932358 2 de 20
Datos recolectados del tweet: psanchezvicente/status/1049374363408056320 3 de 20
Datos recolectados del tweet: amnistiamadrid/status/1049367661686218753 4 de 20
Datos recolectados del tweet: laurmateo/status/1049360178934702080 5 de 20
Datos recolectados del tweet: Larixxxxx/status/1049359119575072768 6 de 20
Datos recolectados del tweet: UltimaHoracom/status/1049345346781032449 7 de 20
Datos recolectados del tweet: podemosmurcia/status/1049325397140295686 8 de 20
Datos recolectados del tweet: FelipeAlcarazM/status/1049316367323869184 9 de 20
Datos recolectados del tweet: PanyRosasEsCat/status/1049310568698564610 10 de 20
Datos recolectados del tweet: vivinarcosis/status/1049306232547422208 11 de 20
Datos recolectados del tweet: ElleGademi/status/1049297571116670976 12 de 20
Datos recolectados del tweet: ElleGademi/status/1049297468591095809 13 de 20
Datos recolectados del tweet: Relatoras/status/1049270513984520192 14 de 20
Datos recolectados del tweet: RepYDemocracia/status/1049267396140253185 15 de 20
Datos recolectados del tweet: estudioPROTEiCA/status/1049255009865662464 16 de 20
Datos recolectados del tweet: GuiomarMerodioA/status/1049240392795938818 17 de 20
Datos recolectados del tweet: admtvoscoles/status/1049237926247370752 18 de 20
Datos recolectados del tweet: feminismeslgtbi/status/1049235626938261504 19 de 20
Datos recolectados del tweet: vivinarcosis/status/1049235090457448448 20 de 20

Terminando el proceso.
      
Tweets recuperados: 20 
Tweets borrados: 0 
Tweets con errores: 0 
Tweets pendientes: 0 
# A tibble: 20 × 15
   fecha               username        texto tweet_citado user_citado emoticones
   <dttm>              <chr>           <chr> <chr>        <chr>       <list>    
 1 2018-10-08 21:04:02 KevinStapleto19 "#Gi…  <NA>        <NA>        <chr [0]> 
 2 2018-10-08 20:57:50 fnando71        "Que…  <NA>        <NA>        <chr [0]> 
 3 2018-10-08 19:01:59 psanchezvicente "#mu…  <NA>        <NA>        <chr [6]> 
 4 2018-10-08 18:35:21 amnistiamadrid  "Des… "Comenzamos… @Feminismo… <chr [3]> 
 5 2018-10-08 18:05:37 laurmateo       "La …  <NA>        <NA>        <chr [2]> 
 6 2018-10-08 18:01:24 Larixxxxx       "Qué…  <NA>        <NA>        <chr [0]> 
 7 2018-10-08 17:06:41 UltimaHoracom   "Aco…  <NA>        <NA>        <chr [0]> 
 8 2018-10-08 15:47:24 podemosmurcia   "#VO…  <NA>        <NA>        <chr [2]> 
 9 2018-10-08 15:11:31 FelipeAlcarazM  "Se …  <NA>        <NA>        <chr [0]> 
10 2018-10-08 14:48:29 PanyRosasEsCat  "Vol…  <NA>        <NA>        <chr [0]> 
11 2018-10-08 14:31:15 vivinarcosis    "Señ…  <NA>        <NA>        <chr [0]> 
12 2018-10-08 13:56:50 ElleGademi      "#8M" " Presentam… @Podemos_C… <chr [2]> 
13 2018-10-08 13:56:26 ElleGademi      "#8M" "Frente a l… @Podemos_C… <chr [1]> 
14 2018-10-08 12:09:19 Relatoras       "Est… "Casado, en… @anaisbern… <chr [0]> 
15 2018-10-08 11:56:56 RepYDemocracia  " El…  <NA>        <NA>        <chr [2]> 
16 2018-10-08 11:07:43 estudioPROTEiCA "Est… "El 8 de Ma… @feminicid… <chr [0]> 
17 2018-10-08 10:09:38 GuiomarMerodioA "Ros…  <NA>        <NA>        <chr [0]> 
18 2018-10-08 09:59:50 admtvoscoles    "#Fe…  <NA>        <NA>        <chr [0]> 
19 2018-10-08 09:50:41 feminismeslgtbi "El …  <NA>        <NA>        <chr [0]> 
20 2018-10-08 09:48:34 vivinarcosis    "Fem…  <NA>        <NA>        <chr [0]> 
# ℹ 9 more variables: links_img <list>, respuestas <int>, reposteos <int>,
#   megustas <int>, metricas <chr>, urls <list>, hilo <int>, url <chr>,
#   fecha_captura <dttm>

getTweetsTimeline

Esta función recupera tweets del timeline de unx usuarix especificadx en Twitter. La función inicia sesión en Twitter utilizando las credenciales proporcionadas, navega al perfil del usuarix especificadx, y recopila hasta n_tweets tweets. El proceso de recolección se detiene si se alcanza el número máximo de tweets especificado o después de realizar hasta 600 desplazamientos (scroll).

getTweetsTimeline(
  username = "PSOE",
  n_tweets = 100,
  xuser = Sys.getenv("USER"),
  xpass = Sys.getenv("PASS"),
  dir = getwd()
)
Inició la recolección de tweets.
Tweets recolectados: 6
Tweets recolectados: 19
Tweets recolectados: 34
Tweets recolectados: 48
Tweets recolectados: 63
Tweets recolectados: 80
Tweets recolectados: 94
Tweets recolectados: 108
Finalizó la recolección de tweets.
# A tibble: 108 × 8
   fecha               usern         tweet url   fecha_captura       is_original
   <dttm>              <chr>         <chr> <chr> <dttm>              <lgl>      
 1 2024-09-24 19:36:04 @PSOE         "En … http… 2024-09-25 13:30:59 TRUE       
 2 2024-09-25 16:23:32 @PSOE         "Tom… http… 2024-09-25 13:30:59 TRUE       
 3 2024-09-25 11:39:49 @Pablo_Zuloa… "Bur… http… 2024-09-25 13:30:59 FALSE      
 4 2024-09-25 10:51:51 @oscarlopezt… "El … http… 2024-09-25 13:30:59 FALSE      
 5 2024-09-25 12:03:40 @mjmonteroc   "La … http… 2024-09-25 13:30:59 FALSE      
 6 2024-09-25 11:43:45 @sanchezcast… "Nue… http… 2024-09-25 13:30:59 FALSE      
 7 2024-09-24 19:36:04 @PSOE         "En … http… 2024-09-25 13:31:02 TRUE       
 8 2024-09-25 16:23:32 @PSOE         "Tom… http… 2024-09-25 13:31:02 TRUE       
 9 2024-09-25 11:39:49 @Pablo_Zuloa… "Bur… http… 2024-09-25 13:31:02 FALSE      
10 2024-09-25 10:51:51 @oscarlopezt… "El … http… 2024-09-25 13:31:02 FALSE      
# ℹ 98 more rows
# ℹ 2 more variables: is_retweet <lgl>, is_cita <lgl>

getTweetsHistoricalTimeline

Esta función permite recuperar tweets históricos de Twitter en el timeline de unx usuarix especificadx. Puedes especificar el nombre de usuarix de Twitter y obtener los tweets antiguos publicados por esa persona dentro del período de tiempo especificado. Esta función no captura retweets de otras cuentas.

getTweetsHistoricalTimeline(
  username = "PSOE",
  timeout = 10,
  n_tweets = 100,
  since = "2018-10-26",
  until = "2018-11-30",
  xuser = Sys.getenv("USER"),
  xpass = Sys.getenv("PASS"),
  dir = getwd()
)
Inició la recolección de tweets.
tweets recolectados: 0
tweets recolectados: 7
tweets recolectados: 21
tweets recolectados: 32
tweets recolectados: 40
tweets recolectados: 47
tweets recolectados: 54
tweets recolectados: 62
tweets recolectados: 69
tweets recolectados: 79
tweets recolectados: 86
tweets recolectados: 95
tweets recolectados: 104
Finalizó la recolección de tweets.
Procesando datos...
Datos procesados y guardados.
Tweets únicos recolectados: 95 
# A tibble: 95 × 6
   art_html  fecha               user  tweet           url   fecha_captura      
   <list>    <dttm>              <chr> <chr>           <chr> <dttm>             
 1 <chr [1]> 2018-11-29 18:23:17 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
 2 <chr [1]> 2018-11-29 18:21:51 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
 3 <chr [1]> 2018-11-29 18:17:07 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
 4 <chr [1]> 2018-11-29 18:11:59 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
 5 <chr [1]> 2018-11-29 18:09:01 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
 6 <chr [1]> 2018-11-29 18:06:32 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
 7 <chr [1]> 2018-11-29 18:03:44 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
 8 <chr [1]> 2018-11-29 18:00:21 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
 9 <chr [1]> 2018-11-29 17:56:06 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
10 <chr [1]> 2018-11-29 17:52:41 @PSOE "\n @carmencal… http… 2024-09-25 13:34:07
# ℹ 85 more rows

getUsersFullData

Esta función permite recuperar y procesar datos de usuarixs de Twitter a partir de un vector de URLs de perfiles proporcionadas. Utilizando las credenciales de unx usuarix de Twitter, la función realiza la autenticación y extrae información detallada de cada perfil, como nombre de usuarix, fecha de creación de la cuenta, número de publicaciones, seguidorxs, seguidxs y otros metadatos. Los datos recopilados se devuelven en forma de tibble y se guardan en un archivo .rds.

getUsersFullData(
  urls_users = gsub("@", "https://x.com/", urls$user[1:20]),
  xuser = Sys.getenv("USER"),
  xpass = Sys.getenv("PASS"),
  dir = getwd()
)
Sesión ya iniciada...
Datos sin recolectar usuarix: KevinStapleto19
Datos recolectados usuarix: fnando71
Datos recolectados usuarix: psanchezvicente
Datos recolectados usuarix: amnistiamadrid
Datos recolectados usuarix: laurmateo
Datos recolectados usuarix: Larixxxxx
Datos recolectados usuarix: UltimaHoracom
Datos recolectados usuarix: podemosmurcia
Datos recolectados usuarix: FelipeAlcarazM
Datos recolectados usuarix: PanyRosasEsCat
Datos recolectados usuarix: vivinarcosis
Datos recolectados usuarix: ElleGademi
Datos recolectados usuarix: ElleGademi
Datos recolectados usuarix: Relatoras
Datos recolectados usuarix: RepYDemocracia
Datos recolectados usuarix: estudioPROTEiCA
Datos recolectados usuarix: GuiomarMerodioA
Datos recolectados usuarix: admtvoscoles
Datos recolectados usuarix: feminismeslgtbi
Datos recolectados usuarix: vivinarcosis

Terminando el proceso.
      
Usuarixs recuperados: 19 
Usuarixs no recuperados: 1 
# A tibble: 19 × 13
   fecha_creacion      nombre_adicional descripcion             nombre ubicacion
   <dttm>              <chr>            <chr>                   <chr>  <chr>    
 1 2010-09-30 12:55:46 fnando71         "Cuenta personal. Biól… "Fer … "Madrid …
 2 2012-05-24 19:01:08 psanchezvicente  "Historiadora, documen… "Pila… "Xixón, …
 3 2015-04-15 16:08:40 amnistiamadrid   "Los derechos humanos … "Amni… "Comunid…
 4 2009-10-24 14:41:54 laurmateo        "Periodista/Xornalista… "Laur… ""       
 5 2013-02-01 16:48:47 Larixxxxx        "The personal is polit… "Lara… ""       
 6 2009-04-09 20:00:36 UltimaHoracom    "Noticias de Paraguay … "Últi… "Paragua…
 7 2014-01-20 11:59:18 podemosmurcia    "\U0001f7e3 Cuenta ofi… "Pode… "Región …
 8 2011-01-21 21:16:55 FelipeAlcarazM   "Siberia (mi nueva nov… "@Fel… ""       
 9 2014-01-05 19:48:33 PanyRosasEsCat   "Contra el sistema cap… "Pa i… "panyros…
10 2012-02-20 21:51:57 vivinarcosis     "Maestra y muchas cosa… "vivi… "Ya lo s…
11 2011-12-17 17:30:01 ElleGademi       "Sólo el pueblo salva … "Elle… "Madrid.…
12 2011-12-17 17:30:01 ElleGademi       "Sólo el pueblo salva … "Elle… "Madrid.…
13 2013-05-06 21:42:21 Relatoras        "Relatoras es una comu… "Comu… "España" 
14 2015-04-17 10:57:03 RepYDemocracia   "Instituto de pensamie… "Inst… "Madrid,…
15 2018-09-20 11:22:30 estudioPROTEiCA  "Estudio sobre protest… "PROT… "DASP - …
16 2012-11-12 19:03:38 GuiomarMerodioA  "PhD in Sociology. Pro… "Guio… "Madrid" 
17 2013-08-26 18:17:40 admtvoscoles     "Fuera de nuestros tra… "ADMT… "Santand…
18 2015-01-22 09:10:55 feminismeslgtbi  "Cercle Sectorial Pode… "Pode… ""       
19 2012-02-20 21:51:57 vivinarcosis     "Maestra y muchas cosa… "vivi… "Ya lo s…
# ℹ 8 more variables: identificador <chr>, url_imagen <chr>,
#   url_miniatura <chr>, seguidorxs <int>, amigxs <int>, tweets <int>,
#   url <chr>, enlaces_relacionados <chr>

Conclusión y próximas etapas

El paquete TweetScraperR ofrece un conjunto de herramientas robustas para la recolección y procesamiento de datos de Twitter, permitiendo realizar análisis en tiempo real e históricos, tanto de hashtags, como de búsquedas específicas, perfiles de usuarixs y timelines. Estas funciones facilitan la obtención de datos masivos de redes sociales, un recurso esencial en la investigación de fenómenos sociales y políticos, análisis de tendencias, y estudios longitudinales.

Sin embargo, este es solo el comienzo de lo que se puede lograr. Las futuras actualizaciones del paquete podrían enfocarse en agregar funcionalidades para el análisis de sentimientos de los tweets recopilados, así como la posibilidad de integrar herramientas de visualización de datos. Estas características permitirían explorar de manera más profunda los patrones de conversación en Twitter y los estados de ánimo de la población a través del tiempo, proporcionando un análisis más completo para investigaciones en ciencias sociales, marketing, y otras áreas de estudio.

La incorporación de estas mejoras, junto con una interfaz más accesible para usuarixs menos familiarizadxs con el entorno de R, haría que TweetScraperR sea aún más valioso para una amplia gama de usuarixs interesadxs en la minería de datos en redes sociales.


Bibliografía

  • Ledford, H. (2023). Researchers scramble as Twitter plans to end free data access. Nature, 614(7949), 602-603.

  • Murtfeldt, R., Alterman, N., Kahveci, I., & West, J. D. (2024). RIP Twitter API: A eulogy to its vast research contributions (arXiv:2404.07340). arXiv. https://doi.org/10.48550/arXiv.2404.07340

  • Poudel & Weninger (2024) Navigating the Post-API Dilemma. In Proceedings of the ACM Web Conference 2024 (WWW ’24). Association for Computing Machinery, New York, NY, USA, 2476–2484. https://doi.org/10.1145/3589334.3645503

  • Trezza D (2023) To scrape or not to scrape, this is dilemma. The post-API scenario and implications on digital research. Front. Sociol. 8:1145038. doi: 10.3389/fsoc.2023.1145038