调用Twitter API解析JSON时遇'entries'键不存在错误求助
解决Twitter API获取screen_name时的'entries'键缺失错误
问题原因
你遇到的'entries' key not found错误,是因为硬编码的响应路径和实际返回的JSON结构不匹配。可能的情况包括:
- Twitter非官方GraphQL API的响应结构发生了变更
- 请求未成功,返回了错误信息而非预期的用户数据
instructions数组的第一个元素并非包含entries的对象
调试与修复步骤
- 先查看完整响应结构
不要直接访问深层嵌套的键,先打印整个响应数据,确认实际结构:
import requests, json # 你的cookies、headers、params代码保持不变 data = requests.get( 'https://twitter.com/i/api/graphql/3yX7xr2hKjcZYnXt6cU6lQ/Followers', params=params, cookies=cookies, headers=headers ).json() # 打印格式化后的响应,方便查看结构 print(json.dumps(data, indent=2))
运行后你可以清楚看到:返回的JSON是否包含预期的entries字段,或者是否存在errors字段说明请求失败(比如认证过期、权限不足)。
- 安全访问嵌套键
即使结构正确,直接用索引和键访问容易触发KeyError,建议使用.get()方法逐层获取,同时处理可能的缺失情况:
# 逐层安全获取目标数据 timeline_instructions = data.get('data', {}).get('user', {}).get('result', {}).get('timeline', {}).get('timeline', {}).get('instructions', []) if timeline_instructions: # 遍历instructions找到包含entries的项 for instr in timeline_instructions: entries = instr.get('entries') if entries: screen_name = entries[0].get('content', {}).get('itemContent', {}).get('user_results', {}).get('result', {}).get('screen_name') if screen_name: print(screen_name) break else: print("未找到有效的timeline instructions")
额外提示
- Twitter的非官方GraphQL API没有公开文档,结构经常变更,硬编码路径很容易失效。建议使用官方Twitter API v2(需开发者账号)来获取关注者信息,结构更稳定且有完整文档支持。
- 确保你的cookies、auth_token等认证信息是有效的,过期的认证会导致请求返回错误。
内容的提问来源于stack exchange,提问作者Nasya Elena
相关产品推荐
相关产品推荐

