使用Tweepy获取Twitter粉丝信息 如何实现15分钟查询18000条数据
代码调整方案
Twitter API v1.1的users/lookup接口速率限制为每15分钟900次请求,单次请求最多查询100个用户ID,理论上15分钟最高可查询90000个用户信息,完全满足你18000条的采集需求。你之前触发限流的核心原因是逐ID调用查询接口,浪费了请求配额,按以下方案调整即可:
核心调整点
- 初始化Tweepy API时开启内置的速率限制自动等待参数
wait_on_rate_limit=True,无需手动编写休眠逻辑处理限流,API会自动在配额用尽时等待到配额重置后继续运行,大幅降低限流触发概率。 - 先将你已经采集到的所有粉丝ID整理为列表,再按100个/组的规格拆分,每组调用一次批量查询接口,最大化利用每次请求的配额。
- 移除原有采集ID逻辑里不必要的
time.sleep(0.01),开启自动限流后不需要额外加休眠拖慢采集速度。
调整后参考代码
import tweepy import csv # 替换为你自己的API密钥 consumer_key = "你的应用consumer_key" consumer_secret = "你的应用consumer_secret" access_token = "你的账号access_token" access_token_secret = "你的账号access_token_secret" # 初始化API时开启自动等待限流 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True) # 读取你之前存储的所有粉丝ID到列表,此处替换为你自己的ID读取逻辑 follower_ids = [] count = 0 # 单次查询最多支持100个ID batch_size = 100 # 拆分ID为查询批次 id_batches = [follower_ids[i:i+batch_size] for i in range(0, len(follower_ids), batch_size)] # 初始化csv写入器,按需调整字段 csv_file = open("user_info.csv", "w", encoding="utf-8", newline="") csv_writer = csv.writer(csv_file) csv_writer.writerow(["uid", "用户名", "粉丝数", "关注数", "是否认证"]) for batch in id_batches: try: # 批量查询当前批次用户信息 users = api.lookup_users(user_id=batch) for user in users: # 提取所需字段 uid = user.id_str screen_name = user.screen_name followers_count = user.followers_count friends_count = user.friends_count verified = user.verified # 写入csv csv_writer.writerow([uid, screen_name, followers_count, friends_count, verified]) count += 1 print(f"已完成:{count}条") except tweepy.TweepError as e: print(f"当前批次查询失败:{e.reason}") continue csv_file.close()
内容的提问来源于stack exchange,提问作者Muhammad Adeel Irshad
相关产品推荐
相关产品推荐

