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

使用Tweepy获取Twitter十万级粉丝遇限流、授权及数据不全问题

问题解答:获取Twitter账号全部粉丝的三类问题处理

1. OAuth2AppHandler触发429限流问题

原因

Twitter API的OAuth2应用级认证有严格的请求限流,即使是高级开发者账号,get_followers接口的调用额度也有限制。你的代码未启用限流等待机制,短时间内发起大量请求直接触发了429错误。

解决方案

Tweepy的Cursor本身就是分页工具,只需配合wait_on_rate_limit=True参数让API自动等待限流重置,同时合理设置count参数(最大200,减少请求次数)。补充完整代码如下:

import tweepy

auth = tweepy.OAuth2AppHandler(api_key, api_secret)
# 开启限流等待和提示
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

followers = []
# 遍历Cursor分页获取粉丝,自动处理限流
for follower in tweepy.Cursor(api.get_followers, screen_name=sN, count=200).items(125000):
    followers.append({"id": follower.id, "screen_name": follower.screen_name})
    # 每1000条批量保存一次,避免数据丢失
    if len(followers) % 1000 == 0:
        with open("followers.txt", "a", encoding="utf-8") as f:
            for item in followers[-1000:]:
                f.write(f"{item['id']},{item['screen_name']}\n")

# 保存剩余数据
with open("followers.txt", "a", encoding="utf-8") as f:
    for item in followers:
        f.write(f"{item['id']},{item['screen_name']}\n")

2. OAuth1UserHandler仅传api_key/secret报401未授权问题

原因

OAuth1UserHandler是用户级认证,必须传入完整的四个参数:consumer_key、consumer_secret、access_token、access_token_secret。仅传入前两个参数无法完成用户身份验证,因此触发401错误。

解决方案

使用从Twitter开发者平台获取的完整OAuth1凭证:

auth = tweepy.OAuth1UserHandler(
    consumer_key="你的consumer_key",
    consumer_secret="你的consumer_secret",
    access_token="你的access_token",
    access_token_secret="你的access_token_secret"
)
api = tweepy.API(auth, wait_on_rate_limit=True)

注:access_token和access_token_secret需通过用户授权流程获取(或使用开发者账号自身的账号凭证)。


3. 完整OAuth1认证仅获取252条粉丝的问题

可能原因

  1. 私有粉丝过滤:目标账号的粉丝中大量是私有账号(受保护的用户),Twitter API不会返回私有账号信息,实际能获取的只有公开粉丝。
  2. 代码变量错误:代码中使用ids.append但未初始化ids变量(仅定义了first_net),若运行时未报错,可能是之前的代码定义过ids,但写入文件时可能覆盖或中断。
  3. 分页中断:get_followers接口的分页cursor可能提前返回空值,导致遍历停止(比如遇到API隐藏限制)。

解决方案

步骤1:修复代码变量与写入逻辑

import tweepy

auth = tweepy.OAuth1UserHandler(
        consumer_key, consumer_secret, 
        access_token, access_token_secret
)

api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

# 初始化变量
ids = []
for status in tweepy.Cursor(api.get_followers, screen_name=sN, count=200).items(125000):
    print(status.screen_name)
    ids.append([status.id, status.screen_name])
    # 用追加模式写入,避免覆盖数据
    with open(r'filename.txt', 'a', encoding='utf-8') as fp:
        fp.write(f"{status.id},{status.screen_name}\n")

print(f"共获取{len(ids)}条粉丝数据")

步骤2:检查私有粉丝占比

通过Twitter网页端查看目标账号的粉丝列表,统计公开账号数量。若大部分是私有账号,API无法获取这些数据是正常限制。

步骤3:添加分页日志排查

在循环中打印cursor信息,确认分页是否正常:

for page in tweepy.Cursor(api.get_followers, screen_name=sN, count=200).pages():
    print(f"当前页获取{len(page)}条数据,下一页cursor: {page.next_cursor}")
    for status in page:
        ids.append([status.id, status.screen_name])

如果next_cursor提前变为0,说明API已返回所有可获取的公开粉丝数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:15:17