如何突破NPS API默认限制获取更多公园数据及全量结果?
解决NPS API获取全量公园数据的问题
1. 如何获取超过50条的公园数据
NPS API限制单请求最大返回50条数据,直接设置limit>50会触发报错,正确方式是使用**分页参数start**分批获取:
- 每次请求固定
limit=50(API允许的最大值) - 通过
start参数指定数据起始位置,比如第一次start=0,第二次start=50,第三次start=100,以此类推,直到返回的数据不足50条,说明已获取全部数据。
以下是适配你现有库的Python代码示例:
import urllib.request import json API_KEY = "你的API密钥" base_url = "https://developer.nps.gov/api/v1/parks" all_parks = [] # 先获取当前总公园数量 initial_url = f"{base_url}?limit=1&API_KEY={API_KEY}" with urllib.request.urlopen(initial_url) as response: data = json.load(response) total_parks = int(data["total"]) # 循环分批请求数据 start = 0 while start < total_parks: request_url = f"{base_url}?limit=50&start={start}&API_KEY={API_KEY}" with urllib.request.urlopen(request_url) as response: park_data = json.load(response) all_parks.extend(park_data["data"]) start += 50 print(f"共获取到{len(all_parks)}条公园数据")
2. 是否支持获取全量结果以适配未来新增数据
NPS API没有提供直接返回全量数据的参数,但通过上述分页逻辑可以实现全量获取,且能自动适配未来新增的公园:
- 每次运行代码时,先请求一次获取最新的
total值(当前总公园数量) - 根据最新的总条数自动计算需要请求的次数,确保不会遗漏新增的数据
- 即使未来公园数量超过466,循环逻辑会自动调整请求次数,无需手动修改代码
内容的提问来源于stack exchange,提问作者museum
相关产品推荐
相关产品推荐

