Tweepy运行报错:'API' object has no attribute 'followers_ids'如何解决
问题排查与解决方案
核心原因
报错本质是Tweepy版本不兼容:你当前设备安装的是Tweepy 4.0及以上版本,而代码是基于Tweepy 3.x版本编写的,两个大版本的v1.1 API方法命名存在差异,followers_ids方法在4.x版本中已被重命名移除,所以触发属性不存在的报错。其他设备运行正常是因为其安装的是3.x版本的Tweepy,直接重装默认拉取最新版本,所以无法解决问题。
排查验证步骤
运行以下命令查看当前Tweepy版本:pip show tweepy
如果返回的Version字段大于等于4.0.0,即可确认是版本兼容问题。
两种修复方案
方案1:降级到兼容的旧版本(无需修改代码)
直接安装Tweepy 3.x的最后稳定版本即可:pip install tweepy==3.10.0
安装完成后原有代码可直接运行。
方案2:适配现有4.x版本(修改代码中的API调用)
只需修改代码中两处API方法名即可:
- 将
Cursor(api.followers_ids, screen_name=screen_name)改为Cursor(api.get_follower_ids, screen_name=screen_name) - 将
users = api.lookup_users(user_ids=chunk)改为users = api.get_users(user_ids=chunk)
修改后的核心函数代码如下:
def get_followers(screen_name): # get followers for a given user fname = "users/{}/followers.json".format(screen_name) max_pages = math.ceil(MAX_FRIENDS / 5000) with open(fname, 'w') as f: for followers in Cursor(api.get_follower_ids, screen_name=screen_name).pages(max_pages): for chunk in paginate(followers, 100): users = api.get_users(user_ids=chunk) for user in users: f.write(json.dumps([user.id, user.screen_name, user.location, str(user.created_at)], sort_keys=True)+"\n") if len(followers) == 5000: print("More results available. Sleeping for 60 seconds to avoid rate limit") time.sleep(60) print("task completed for " + screen_name)
内容的提问来源于stack exchange,提问作者Suraya Zulkifli
相关产品推荐
相关产品推荐

