使用Tweepy获取用户关注列表无报错但无法打印问题
问题分析与解决
你的代码无报错但输出空列表,大概率是以下几个原因导致:
API权限不足:Twitter API v1.1的
friends/list端点需要账号拥有读取权限。登录Twitter开发者平台,检查你的项目权限是否开启了读取用户关注列表的权限,同时确认API密钥(consumer_key、consumer_secret等)对应正确的项目。Cursor未获取到数据:可能是请求没有返回结果,你可以在循环内添加调试输出,确认是否真的获取到了关注对象:
li = [] for friend in tweepy.Cursor(api.get_friends, screen_name="elonmusk").items(): print(f"获取到关注对象:{friend.screen_name}") # 调试语句 li.append(friend.screen_name) print(li)如果调试语句没输出,说明请求没有拿到数据,需要检查API密钥的有效性,或者确认目标用户的关注列表是否公开(elonmusk的是公开的,所以大概率是权限问题)。
Tweepy版本兼容性:如果使用的是Tweepy v4+,
api.get_friends本质是调用v1.1的旧端点,部分新创建的开发者账号可能默认只支持v2接口。如果是这种情况,建议切换到Tweepy v2的客户端来实现:import tweepy from api_keys import * # 使用v2客户端 client = tweepy.Client( bearer_token=bearer_token, consumer_key=consumer_key, consumer_secret=consumer_secret, access_token=access_token, access_token_secret=access_token_secret ) li = [] # 获取用户ID(通过screen_name转换) user = client.get_user(username="elonmusk") if user.data: # 分页获取所有关注对象 for page in tweepy.Paginator( client.get_users_following, id=user.data.id, max_results=1000, # 每次请求最大返回数 user_fields=["username"] ): if page.data: li.extend([user.username for user in page.data]) print(li)注意:v2接口需要你在开发者平台申请到相应的权限,并且需要提供
bearer_token。
内容的提问来源于stack exchange,提问作者jojo_hal
相关产品推荐
相关产品推荐

