使用rtweet的get_timeline与users_data批量获取多账号推文及用户信息问题
批量获取Twitter账号推文并关联用户信息的解决方案
问题原因
当使用get_timeline批量拉取多个账号的推文时,返回的合并数据框中,users_data()函数默认仅提取第一个账号的用户信息,无法直接关联所有推文对应的账号信息。
解决方案1:循环逐个拉取并合并
通过遍历每个账号,单独获取推文和对应的用户信息,再将用户ID、用户名等字段添加到推文数据中,最后合并所有结果:
library(rtweet) # 目标账号列表 accounts <- c("BarackObama", "justinbieber") # 已完成API认证(替换为你的认证方式) auth <- rtweet_bot() # 初始化空数据框用于存储合并结果 final_data <- data.frame() # 循环处理每个账号 for (acc in accounts) { # 获取当前账号的推文 acc_tweets <- get_timeline(acc, n = 100, token = auth, retryonratelimit = TRUE) # 获取当前账号的用户信息 acc_user <- users_data(acc_tweets) # 为推文数据添加用户ID和用户名字段 acc_tweets$user_id <- acc_user$user_id acc_tweets$screen_name <- acc_user$screen_name # 合并到总数据框 final_data <- rbind(final_data, acc_tweets) } # 查看关联后的结果示例 head(final_data[, c("text", "user_id", "screen_name")])
解决方案2:用purrr批量处理(更简洁)
借助purrr包的map_dfr函数,批量处理每个账号并自动合并结果:
library(rtweet) library(purrr) library(dplyr) accounts <- c("BarackObama", "justinbieber") auth <- rtweet_bot() # 定义单个账号的处理函数 process_single_account <- function(account) { # 获取推文 tweets <- get_timeline(account, n = 100, token = auth, retryonratelimit = TRUE) # 获取用户信息 user_info <- users_data(tweets) # 为推文添加用户字段 tweets %>% mutate( user_id = user_info$user_id, screen_name = user_info$screen_name ) } # 批量处理所有账号并合并数据 final_data <- map_dfr(accounts, process_single_account) # 查看结果 head(final_data[, c("text", "user_id", "screen_name")])
补充方案:批量获取用户信息再关联
如果已经批量拉取了所有推文,可通过lookup_users批量获取所有账号的用户信息,再通过推文的来源标识关联(需确保推文数据能对应到所属账号):
library(rtweet) library(dplyr) accounts <- c("BarackObama", "justinbieber") auth <- rtweet_bot() # 批量获取所有推文 all_tweets <- get_timeline(accounts, n = 100, token = auth, retryonratelimit = TRUE) # 批量获取所有账号的用户信息 all_users <- lookup_users(accounts, token = auth) %>% select(user_id, screen_name) # 按账号拆分推文并关联用户信息(假设每个账号拉取100条,按顺序排列) all_tweets <- all_tweets %>% mutate( screen_name = rep(accounts, each = 100) ) %>% left_join(all_users, by = "screen_name") # 查看结果 head(all_tweets[, c("text", "user_id", "screen_name")])
内容的提问来源于stack exchange,提问作者cianna
相关产品推荐
相关产品推荐

