You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

academictwitteR调用get_user_timeline返回400错误及突破3200条推文限制问题

问题原因及解决方法

400错误原因说明

  • 核心错误是你请求参数里的时间格式不符合Twitter API v2的要求:你代码中start_tweets和end_tweets的时间部分使用了点号分隔(T00.00.00Z),而API要求的ISO 8601格式必须使用冒号分隔,正确写法为T00:00:00Z,参数格式错误会直接触发400响应。
  • 次要排查点:确认你指定的data_path本地路径已提前创建,部分版本的academictwitteR在路径不存在时也会抛出异常;同时确认你安装的是最新版的academictwitteR,旧版本对学术API的适配存在已知bug。

修复400错误的代码调整

# 仅修改时间格式即可,其他参数保持不变
tmlne <- get_user_timeline("25390350",
                  start_tweets = "2009-03-19T00:00:00Z", 
                  end_tweets = "2021-11-27T00:00:00Z",
                  bearer_token = get_bearer(),
                  data_path = "twitter/data/timelines/",
                  n = 100000, 
                  bind_tweets = F,
                  file = "tmlnw")

academictwitteR本身会自动处理分页逻辑,只要你确实开通了学术研究API权限,调整后可以直接拉取超过3200条的全量历史推文,无需额外手动分页。

调整get_timelines_v2拉取更早历史推文的方法

默认只能拉取3200条是因为TwitterV2包默认调用的是普通权限的用户时间线端点,且未开启全量分页,调整步骤如下:

  1. 调用时显式指定使用学术研究版端点,同时设置每次请求拉取上限100条
  2. 通过返回结果中的next_token进行循环分页,直到没有新的分页token返回为止
  3. 按时间范围分段拉取,可避免单次请求数据量过大触发异常

示例逻辑参考:

# 初始化参数
user_id <- "25390350"
start_time <- "2009-03-19T00:00:00Z"
end_time <- "2021-11-27T00:00:00Z"
all_tweets <- list()
next_token <- NULL
i <- 1

# 循环分页拉取
repeat {
  res <- get_timelines_v2(
    user = user_id,
    start_time = start_time,
    end_time = end_time,
    max_results = 100,
    pagination_token = next_token,
    bearer_token = get_bearer(),
    endpoint = "/2/users/:id/tweets"
  )
  all_tweets[[i]] <- res$data
  if (is.null(res$meta$next_token)) break
  next_token <- res$meta$next_token
  i <- i + 1
  # 控制请求频率,避免触发速率限制
  Sys.sleep(1)
}

# 合并所有结果
full_timeline <- do.call(rbind, all_tweets)

内容的提问来源于stack exchange,提问作者H.Stevens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:18:00