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

使用Python与Tweepy构建Twitter关注者网络时无法获取全部关注者

嘿,我之前用Tweepy爬Twitter关注者的时候也遇到过一模一样的问题!其实这不是代码写错了,主要是Twitter API的分页机制和速率限制在起作用,我给你梳理下怎么解决:

为什么只能拿到少量关注者?
  • Twitter的API(不管是v1.1还是v2版本)都不会一次性返回所有关注者,默认每次请求最多返回1000个结果(v2)或者200个(v1.1),必须通过分页令牌来迭代获取下一页的数据。
  • 另外API还有严格的速率限制,比如v2的get_users_followers端点每15分钟最多允许15次请求,超过这个次数就会被限流,导致后续请求失败,自然拿不到全部数据。
用Tweepy的Paginator解决分页问题

如果你用的是Tweepy v4及以上版本,官方提供了Paginator类,可以自动帮你处理分页和速率限制,不用手动管理分页令牌。这里给你一个完整的示例代码:

import tweepy

# 替换成你的Bearer Token(来自Twitter开发者平台)
bearer_token = "YOUR_BEARER_TOKEN"
client = tweepy.Client(bearer_token)
# 开启自动等待速率限制重置
client.wait_on_rate_limit = True

def fetch_all_followers(target_user_id):
    all_followers = []
    # 使用Paginator迭代所有分页结果
    for page in tweepy.Paginator(
        client.get_users_followers,
        id=target_user_id,
        max_results=1000,  # 每页最多拿1000个,是v2的上限
        user_fields=['username', 'name', 'created_at']  # 按需添加需要的用户字段
    ):
        # 把当前页的用户信息存入列表
        if page.data:
            for user in page.data:
                all_followers.append({
                    "user_id": user.id,
                    "username": user.username,
                    "display_name": user.name
                })
        print(f"已获取 {len(all_followers)} 个关注者...")
    return all_followers

# 替换成目标用户的ID(可以通过client.get_user(username="你的目标用户名")获取)
target_user_id = "123456789"
followers_list = fetch_all_followers(target_user_id)
print(f"最终获取到 {len(followers_list)} 个关注者")
额外需要注意的点
  • 如果你还在使用Tweepy的v1.1接口(比如API.followers),那需要手动处理cursor参数来分页,不过更推荐迁移到v2版本,因为v1.1的限制更严格,功能也更少。
  • 有些用户的关注者里包含受保护的账号(设置了隐私),这类账号是无法通过API获取的,所以最终拿到的数量可能会比实际关注者数少一点,这是正常情况。
  • 免费版Twitter API的速率限制是每15分钟15次请求,每次最多拿1000个关注者,Paginator会自动等待限流结束后继续请求,不用手动处理等待逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:05:41