Learn AI with Python · 课时

数据采集的 REST API 基础

HTTP GET/POST、请求头、身份验证(API 密钥、Bearer)以及使用 requests 解析 JSON

第 1 / 4 课13 个步骤

数据采集的 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 — update
  • DELETE — 删除

收集数据时,您主要使用 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

状态码会告诉您请求是否成功:

  • 200 OK
  • 301/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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 数据采集的 REST API 基础
  2. 分页与大型数据集采集
  3. 高效存储采集的数据
  4. 使用公共数据 API
← 返回 Learn AI with Python