TweetScraperR recolecta datos de X/Twitter (tweets,
usuarixs y metadatos) para análisis y visualización. Esta viñeta
describe el flujo recomendado, basado en consultas a la
API GraphQL interna de X (datos estructurados, sin selectores HTML
frágiles).
1. Instalar el motor (una vez por máquina)
El motor de scraping corre sobre Node.js (>= 18) + Playwright. Se instala una sola vez:
library(TweetScraperR)
# Descarga Playwright + el navegador Chromium dentro del paquete.
installPlaywrightEngine()
# Verifica que el motor quedó operativo.
checkPlaywrightEngine()2. Importar tu sesión
X bloquea el login automatizado (detecta el navegador por fingerprint). Por eso la sesión se importa desde tu navegador normal, donde ya estás logueadx:
- Iniciá sesión en https://x.com en tu navegador habitual.
- Abrí las DevTools (F12) → pestaña Application /
Almacenamiento → Cookies →
https://x.com. - Copiá los valores de las cookies
auth_tokenyct0. - Importalos:
importSessionX(auth_token = "tu_auth_token", ct0 = "tu_ct0")La sesión queda guardada en disco y todas las funciones la reusan sin volver a loguearse. Cuando las cookies expiren, repetí el paso para reimportarlas.
3. Recolectar datos (funciones *API())
Las funciones *API() devuelven un tibble
con datos estructurados: texto completo, fecha exacta y métricas
(respuestas, retweets, citas, me gusta, vistas).
# Timeline de unx usuarix
tl <- getUserTweetsAPI("rstatstweet", n_tweets = 200)
# Búsqueda (Latest / Top / Media; soporta operadores como from:, since:, lang:)
busq <- getTweetsSearchAPI("#RStats lang:es", n_tweets = 200, product = "Latest")
# Respuestas / hilo de un tweet
hilo <- getTweetsRepliesAPI("https://x.com/NASA/status/123", n_tweets = 100)
# Datos de tweets a partir de sus URLs
datos <- getTweetsDataAPI(c(
"https://x.com/NASA/status/123",
"https://x.com/NASA/status/456"
))
# Media (fotos/videos) de unx usuarix
media <- getUserMediaAPI("NASA", n_tweets = 100)
# Redes de usuarixs
seguidores <- getUserFollowersAPI("rstatstweet", n_users = 200)
siguiendo <- getUserFollowingAPI("rstatstweet", n_users = 200)
retweeters <- getTweetsRetweetsAPI("https://x.com/NASA/status/123", n_users = 200)
# Datos de perfil
perfiles <- getUsersDataAPI(c("NASA", "rstatstweet"))Por defecto cada función guarda un archivo .rds con
marca de tiempo en el directorio de trabajo (save = TRUE);
pasá save = FALSE para no guardar.
4. Visualización y análisis
Sobre los datos recolectados podés usar las funciones de
visualización del paquete (plotTime(),
plotWords(), plotEmojis()) y de análisis con
IA (getTweetsSentiments(),
getTweetsImagesAnalysis()).