You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Star Wars API分页拉取全量角色(people)数据问询

原有代码的问题

  • 循环范围仅设置了range(1,3),只会执行2次请求,远不够覆盖9页数据
  • 请求地址参数错误,https://swapi.dev/api/people?page没有拼接页码值,每次请求实际返回的都是第一页数据
  • 循环中每次都直接给results赋值,会覆盖上一页的结果,最终只能拿到最后一次请求的数据

最优解决方案(无需提前知晓总页数)

SWAPI的返回结果中自带next字段,存储下一页的请求地址,当没有下一页时next值为null,直接用该字段做循环终止条件即可,就算后续接口总角色数变动也无需调整代码。

import requests
import json

# 初始化存储所有角色的总列表
all_people = []
# 第一页的请求地址
current_url = "https://swapi.dev/api/people"

while current_url:
    resp = requests.get(current_url)
    # 解析返回内容,也可以直接用resp.json()替代json.loads(resp.content),效果一致
    page_data = json.loads(resp.content)
    # 把当前页的角色数据追加到总列表中
    all_people.extend(page_data['results'])
    # 更新为下一页地址,没有下一页时current_url为None,自动终止循环
    current_url = page_data['next']

# 输出结果验证
print(f"总共有{len(all_people)}个角色数据")
# 所有角色数据存储在all_people变量中可直接使用
print(all_people)

内容的提问来源于stack exchange,提问作者Jose Antonio Piedehierro Arias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:06:04