使用tweepy的api.get_user拉取用户列表时仅返回最后一个用户如何解决
问题根因
- 循环内部的
user_info变量每次迭代都会被新生成的单用户信息覆盖,没有提前设置容器存储所有用户的查询结果 - 打印
user_info的代码位于for循环的外部,程序执行完整个循环后才会执行打印逻辑,因此只能输出最后一次循环生成的用户数据
修正方案
提前定义空列表存储所有用户信息,循环内将每次生成的单用户字典追加到列表中,可按需选择循环内实时打印单用户信息,或循环结束后打印全量用户信息。
修正后代码如下:
api = tweepy.API(auth) userID_list = ["JeffBezos", "BarackObama","elonmusk"] # 提前定义空列表存储全量用户信息 all_user_info = [] for userxyz in userID_list: user_info = api.get_user(screen_name=userxyz) print(userxyz) name = user_info.name description = user_info.description followers_count = user_info.followers_count friends_count = user_info.friends_count single_user_info = { "Name":name, "Bios":description, "followers_count":followers_count, "friends_count":friends_count, } # 将当前用户信息存入总列表 all_user_info.append(single_user_info) # 如需每次循环实时打印当前用户信息,可取消下一行注释 # print(single_user_info) # 打印所有3位用户的完整信息 print(all_user_info)
如果需要兼容接口请求异常场景,可在循环内增加异常捕获逻辑,避免单个用户查询失败导致整个程序终止:
for userxyz in userID_list: try: user_info = api.get_user(screen_name=userxyz) # 原有数据解析、存储逻辑不变 except Exception as e: print(f"获取用户{userxyz}信息失败,错误原因:{e}") continue
内容的提问来源于stack exchange,提问作者user17456443
相关产品推荐
相关产品推荐

