
本文介绍了如何使用 Python 访问 USDA(美国农业部)的营养数据 API,并解决默认情况下只能获取 50 条记录的限制。通过分析 API 文档,了解分页机制和参数设置,我们将学习如何迭代所有页面,获取完整的数据集,并将其用于后续的数据分析和处理。本文提供详细的代码示例,帮助读者快速上手。
USDA 提供了丰富的营养数据 API,允许开发者获取各种食物的营养成分信息。然而,默认情况下,API 每次只返回有限数量的记录(通常为 50 条)。为了获取更完整的数据,我们需要了解 API 的分页机制,并通过迭代分页来获取所有数据。
在使用任何 API 之前,务必仔细阅读其官方文档。USDA 营养数据 API 的文档明确指出,API 支持分页功能,并提供了 pageSize 和 pageNumber 两个参数来控制每页返回的记录数和要访问的页码。
通过调整这两个参数,我们可以控制每次请求返回的数据量和要访问的页面。
立即学习“Python免费学习笔记(深入)”;
以下代码展示了如何使用 Python 的 requests 库和 json 库来访问 USDA 营养数据 API,并实现分页数据获取:
import requests
import json
import pandas as pd
def call_API(foodName, apiKey):
foods = []
url = f"https://api.nal.usda.gov/fdc/v1/foods/search?api_key={apiKey}&query={foodName}&pageSize=200"
with requests.Session() as req:
try:
r = req.get(url, timeout=10)
r.raise_for_status()
except requests.exceptions.HTTPError as err:
print(f"Error: {err}")
return None
api_response = r.json()
foods.extend(api_response["foods"])
for page in range(2, api_response["totalPages"] + 1):
try:
r = req.get(url + f"&pageNumber={page}", timeout=10)
r.raise_for_status()
except requests.exceptions.HTTPError as err:
print(f"Error: {err}")
break
api_response = r.json()
foods.extend(api_response["foods"])
return foods
food_items = call_API("raw", "YOUR_API_KEY")
# 示例:打印前5个食物的描述
if food_items:
for i in range(min(5, len(food_items))):
print(f"Food {i+1}: {food_items[i]['description']}")
else:
print("No food items found.")代码解释:
call_API(foodName, apiKey) 函数:
主程序:
通过本文的学习,您应该掌握了如何使用 Python 访问 USDA 营养数据 API,并解决默认情况下只能获取 50 条记录的限制。通过了解 API 的分页机制,并编写相应的代码,您可以获取更完整的数据集,为后续的数据分析和处理奠定基础。 请记住,在实际应用中,需要根据具体需求进行调整和优化,并注意 API 密钥安全、错误处理和 API 调用频率限制等问题。
以上就是使用 Python API 获取 USDA 营养数据:突破 50 条记录的限制的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号