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

如何使用Python/Tweepy抓取Twitter指定用户的随机粉丝样本

实现随机粉丝抓取的解决方案

核心逻辑

你当前的代码只拉取前100条最新关注的粉丝,是因为Twitter API返回的粉丝ID默认按关注时间倒序排列,直接取前N条自然都是最新关注的用户。要实现随机抽样,最稳妥的方案是先拉取该账号的全量粉丝ID,再做无重复随机抽样。

适配修改后的代码

首先确保你初始化Tweepy API时开启了速率限制等待,避免拉取过程中被接口拦截:

# 初始化API时添加参数,自动等待速率限制重置
api = tweepy.API(auth, wait_on_rate_limit=True)

修改后的抽样函数如下:

import random

def get_random_followers(username, sample_size=100):
    all_follower_ids = []
    # 分页拉取全部粉丝ID,单次拉取上限5000条
    for page in tweepy.Cursor(api.followers_ids, screen_name=username).pages():
        all_follower_ids.extend(page)
    
    # 粉丝总数小于抽样数时直接返回全部结果
    if len(all_follower_ids) <= sample_size:
        return all_follower_ids
    # 无重复随机抽取指定数量样本
    return random.sample(all_follower_ids, sample_size)

特殊场景适配(大粉丝量账号)

如果目标账号粉丝量级达百万以上,全量拉取耗时过长,可使用近似随机方案:每次拉取1页(5000条)粉丝ID后随机抽取若干条,直到凑够100条样本即可。该方案的样本随机性略差,但拉取效率提升明显,代码示例如下:

import random

def get_random_followers_fast(username, sample_size=100):
    sample_followers = []
    for page in tweepy.Cursor(api.followers_ids, screen_name=username).pages():
        # 每页随机抽取2条,直到凑够样本量
        current_sample = random.sample(page, min(2, sample_size - len(sample_followers)))
        sample_followers.extend(current_sample)
        if len(sample_followers) >= sample_size:
            break
    return sample_followers

注意事项

  • 目前Twitter v1.1接口的粉丝拉取权限需要开发者账号为Elevated等级,基础权限账号无法调用该接口
  • 全量拉取百万级以上粉丝时,速率限制下15分钟最多可拉取7.5万条ID,需提前预估耗时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:57:03