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

如何通过Twitter API获取用户时间线3200条推文及page参数相关问题

嘿,这问题我太熟了!确实是Twitter API从v1.0升级到v1.1后彻底废弃了page参数,改用基于推文ID的分页机制来获取更多内容。下面我给你详细说怎么用python-twitter库拿到最多3200条用户推文:

一、为什么page参数消失了?

完全和API版本升级直接相关!Twitter API v1.1移除了page参数,因为这种分页方式容易出现数据重复或遗漏的问题。取而代之的是基于推文ID的分页,通过max_id参数来控制每次请求的起始位置,这是目前官方唯一推荐的分页方式。

二、用python-twitter库获取最多3200条推文的方法

Twitter API的用户时间线接口本身最多允许回溯获取3200条推文,刚好是16次请求(每次最多200条)。你可以通过循环调用GetUserTimeline,每次更新max_id参数来实现:

具体步骤:

  • 初始化一个空列表来存储所有收集到的推文
  • 第一次调用GetUserTimeline时不指定max_id,直接获取最新的200条推文
  • 从返回的推文中找到最小的推文ID,将其减1后作为下一次请求的max_id(这样就能获取比上一批更早的推文)
  • 重复上述步骤,直到获取的推文总数达到3200条,或者返回的推文数量不足200条(说明没有更多历史内容了)

代码示例:

import twitter

# 初始化API对象(替换成你的API密钥信息)
api = twitter.Api(consumer_key='YOUR_CONSUMER_KEY',
                  consumer_secret='YOUR_CONSUMER_SECRET',
                  access_token_key='YOUR_ACCESS_TOKEN',
                  access_token_secret='YOUR_ACCESS_TOKEN_SECRET')

target_screen_name = "目标用户的用户名"
max_total_tweets = 3200
all_collected_tweets = []
last_tweet_id = None

while len(all_collected_tweets) < max_total_tweets:
    # 每次请求最多拉取200条,通过max_id控制获取更早的内容
    current_batch = api.GetUserTimeline(screen_name=target_screen_name, count=200, max_id=last_tweet_id)
    if not current_batch:
        break  # 没有更多推文可拉取,退出循环
    all_collected_tweets.extend(current_batch)
    # 更新last_tweet_id为当前批次最后一条推文的ID减1,避免重复拉取
    last_tweet_id = current_batch[-1].id - 1
    # 打印进度方便调试
    print(f"已累计获取 {len(all_collected_tweets)} 条推文")

# 后续可以处理all_collected_tweets列表中的内容
print(f"最终成功获取到 {len(all_collected_tweets)} 条推文")

注意事项:

  • 确保你的API密钥拥有只读权限(用户时间线接口属于基础权限,一般默认开通)
  • Twitter API有请求速率限制,用户时间线接口的限制是每15分钟最多900次请求,16次请求完全在限制范围内,不用担心触发限流
  • 如果目标用户的历史推文总数不足3200条,循环会提前终止,返回实际存在的所有推文

内容的提问来源于stack exchange,提问作者Wouterr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:01:51