数据采集的 REST API 基础
HTTP GET/POST、请求头、身份验证(API 密钥、Bearer)以及使用 requests 解析 JSON
数据采集的 REST API 基础 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
人工智能为什么需要应用程序编程接口
模型的效果取决于数据的质量。Web 应用程序编程接口让您可以按需收集新鲜的结构化数据,例如天气、价格、社交帖子和公共数据集,而不必依赖单个静态文件。
本课程使用 Python 和常用的 requests 库来获取和存储这些数据。
什么是 REST 应用程序编程接口
REST 应用程序编程接口通过 HTTP 暴露资源。您向某个网址(端点)发送请求,然后获取返回的数据,通常是 JSON 格式。
主要的 HTTP 方法包括:
GET— 读取数据POST— 创建数据PUT/PATCH— updateDELETE— 删除
收集数据时,您主要使用 GET。
第一个 GET 请求
requests.get(url) 会发送 GET 请求并返回一个响应对象。该响应包含状态、标头和正文。
import requests
resp = requests.get("https://api.example.com/users")
print(resp.status_code) # 200
print(resp.text[:200]) # raw body as a string检查 response.status_code
状态码会告诉您请求是否成功:
200OK301/302重定向400错误请求401/403身份验证问题404未找到429受到速率限制500服务器错误
resp = requests.get(url)
if resp.status_code == 200:
print("Success")
else:
print("Failed:", resp.status_code)使用 response.json() 解析 JSON
大多数应用程序编程接口都会返回 JSON。response.json() 会自动将正文解析为 Python 字典和列表。
不要手动解析 JSON——.json() 会处理这些工作;如果正文不是有效的 JSON,它还会抛出清晰的错误。
resp = requests.get("https://api.example.com/users/1")
data = resp.json()
print(data["name"])
print(data["email"])使用查询参数发送请求
请使用查询参数来筛选和配置请求。将字典传递给 params,requests 会为您构建网址并处理编码。
该示例会在网址中变成 ?city=London&units=metric。
params = {"city": "London", "units": "metric"}
resp = requests.get("https://api.example.com/weather", params=params)
print(resp.url)
print(resp.json())发送标头
标头携带内容类型、用户代理或应用程序编程接口密钥/令牌等元数据。将它们作为字典传递给 headers。
许多应用程序编程接口要求使用 Authorization 标头才能访问。
headers = {
"Authorization": "Bearer YOUR_TOKEN",
"User-Agent": "my-data-collector/1.0",
}
resp = requests.get("https://api.example.com/data", headers=headers)
print(resp.json())使用 raise_for_status() 编写健壮代码
您无需手动检查状态码,而是调用 resp.raise_for_status()。对于任何 4xx 或 5xx 响应,它都会抛出 HTTPError,从而让失败明确暴露出来。
请将其放在异常捕获结构中,以便妥善处理错误。
import requests
try:
resp = requests.get(url, timeout=10)
resp.raise_for_status()
data = resp.json()
except requests.HTTPError as e:
print("HTTP error:", e)
except requests.RequestException as e:
print("Network error:", e)始终设置 timeout
如果不设置 timeout,失去响应的服务器可能会让您的脚本永远等待。请始终传入一个值(单位为秒)。
对于需要访问数千个端点的数据收集循环,缺少 timeout 是任务卡住的常见原因。
resp = requests.get(url, timeout=10) # give up after 10 seconds使用 Session 重用连接
requests.Session 会在多个请求之间重用底层 TCP 连接,并允许您一次性设置标头。对于向同一主机发出的许多调用,这种方式会快得多。
import requests
session = requests.Session()
session.headers.update({"Authorization": "Bearer YOUR_TOKEN"})
for uid in [1, 2, 3]:
resp = session.get(f"https://api.example.com/users/{uid}")
print(resp.json()["name"])
session.close()简洁的获取辅助函数
请将这一模式封装为可复用的函数:设置会话、应用 timeout、遇到错误时抛出异常,并返回解析后的 JSON。
在接下来关于分页和存储的课程中,您将继续使用这个辅助函数。
def fetch_json(session, url, params=None):
resp = session.get(url, params=params, timeout=10)
resp.raise_for_status()
return resp.json()快速检查:健壮的请求
您希望代码在收到 404 或 500 响应时自动抛出异常。
回顾:REST 应用程序编程接口基础
现在您已经可以通过 HTTP 收集数据:
- 使用
requests.get(url, params=..., headers=...)发出请求 - 使用
response.status_code和raise_for_status()检测失败 - 使用
response.json()解析正文 - 使用
timeout避免无限等待 - 使用
requests.Session重用连接和标头
接下来:收集跨越多个页面的数据集。
用 AI 导师学习 Python — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 53
- 课程
- 225
常见问题解答
「数据采集的 REST API 基础」课时是免费的吗?
是的 — 「数据采集的 REST API 基础」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「数据采集的 REST API 基础」这节课中我会学到什么?
HTTP GET/POST、请求头、身份验证(API 密钥、Bearer)以及使用 requests 解析 JSON 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「数据采集的 REST API 基础」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 数据采集的 REST API 基础
- 分页与大型数据集采集
- 高效存储采集的数据
- 使用公共数据 API