如何用R的academictwitter包get_liked_tweets函数获取指定日期点赞推文?
解决academictwitter包get_liked_tweets日期参数无效的问题
先明确参数作用
academictwitter包中get_liked_tweets的start_tweets和end_tweets参数,是用来过滤被点赞推文的发布时间,而非用户点赞该推文的时间。如果你的需求是后者,这两个参数自然不会生效。
方案1:筛选被点赞推文的发布时间区间
如果你的目标是获取用户点赞的、发布在指定日期范围内的推文,先检查以下几点:
- 确保日期格式严格为
YYYY-MM-DD - 确认使用的是最新版本的包(旧版本可能存在参数bug)
示例代码:
library(academictwitter) # 更新包(如果需要) devtools::install_github("cjbarrie/academictwitter") # 获取指定发布日期区间的点赞推文 liked_tweets <- get_liked_tweets( user_id = "目标用户ID", bearer_token = "你的学术版API密钥", start_tweets = "2023-01-01", end_tweets = "2023-12-31" )
方案2:筛选用户点赞行为的时间区间
Twitter学术版API的/users/:id/liked_tweets端点本身不支持直接过滤用户点赞的时间,因此academictwitter包也没有对应参数。可以通过以下步骤实现:
- 批量获取用户的所有点赞推文(按点赞时间倒序返回)
- 利用分页参数
next_token循环获取所有数据 - 本地结合推文发布时间辅助筛选点赞时间在目标区间内的内容(API返回结果中无直接点赞时间字段)
示例分页获取代码:
library(academictwitter) bearer_token <- "你的学术版API密钥" user_id <- "目标用户ID" start_date <- as.Date("2023-01-01") end_date <- as.Date("2023-12-31") all_liked <- list() next_token <- NULL repeat { batch <- get_liked_tweets( user_id = user_id, bearer_token = bearer_token, next_token = next_token ) if (nrow(batch$data) == 0) break all_liked <- c(all_liked, list(batch$data)) next_token <- batch$meta$next_token # 推文发布时间远早于start_date时,点赞时间大概率也早于该日期,可提前终止循环 earliest_tweet_date <- min(as.Date(batch$data$created_at)) if (earliest_tweet_date < start_date) break } # 合并数据并筛选 all_liked_df <- do.call(rbind, all_liked) filtered_liked <- all_liked_df[as.Date(all_liked_df$created_at) >= start_date & as.Date(all_liked_df$created_at) <= end_date, ]
注意:如果必须精准获取用户点赞的时间,可能需要调用Twitter API原始端点或使用其他包(如
rtweet),academictwitter目前暂不支持直接返回点赞时间字段。
内容的提问来源于stack exchange,提问作者naphta
相关产品推荐
相关产品推荐

