跳转到主要内容
PyPI 包: olostep | 要求: Python 3.11+

安装

认证

从 Olostep Dashboard 获取你的 API 密钥。

快速开始

根据你的使用场景,SDK 提供了两种客户端选项:

同步客户端 (Olostep)

最适合:脚本和简单用例,你更喜欢阻塞操作。

同步客户端提供了一个更简单的阻塞接口,如果你对 async/await 不熟悉,它更容易上手。

异步客户端 (AsyncOlostep)

最适合:生产应用程序,以及处理大量并发请求。

异步客户端提供非阻塞操作,是需要高吞吐量的生产应用程序的推荐选择。

同步客户端 (Olostep)

同步客户端 (Olostep) 提供了一个阻塞接口,非常适合脚本和简单用例。

基本网页抓取

批量处理

智能网页爬取

网站映射

AI 驱动的答案

异步客户端 (AsyncOlostep)

异步客户端 (AsyncOlostep) 是高性能应用程序、后端服务以及需要处理大量并发请求的推荐客户端。

基本网页抓取

批量处理

智能网页爬取

网站映射

AI 驱动的答案

SDK 参考

方法结构

两个 SDK 客户端都提供相同的简洁、Python 风格的接口,按逻辑命名空间组织: 每个操作返回具有符合人体工学方法的有状态对象,用于后续操作。

错误处理

使用基础异常类捕获所有 SDK 错误:
有关详细的错误处理信息,包括完整的异常层次结构和细粒度的错误处理选项,请参阅 详细错误处理。

自动重试

SDK 会根据 RetryStrategy 配置自动重试瞬态错误(网络问题、临时服务器问题)。你可以在创建客户端时通过传递 RetryStrategy 实例来自定义重试行为:
有关详细的重试配置选项和最佳实践,请参阅 重试策略。

高级功能

智能输入转换

SDK 智能处理各种输入格式,以最大限度地提高便利性:

高级抓取选项

缓存

默认情况下,每个抓取请求都会获取最新的页面(max_age=0)。传递 max_age 以重用具有相同参数的最近结果并提高响应时间。值以秒为单位;最大值为 7 天(604800)。有关详细信息,请参阅 缓存。

存储

默认情况下,抓取结果会保留大约 7 天。传递 storage 并将 expires_in 设置为 10d、30d、60d、90d、180d、365d 或 never 以更长时间保留。有关详细信息,请参阅 存储。

带自定义 ID 的批量处理

智能爬取

带过滤器的网站映射

答案检索

内容检索

日志记录

启用日志记录以调试问题:
日志级别: INFO(推荐),DEBUG(详细),WARNING,ERROR

重试策略配置

RetryStrategy 类通过自动重试、指数退避和抖动控制 Olostep SDK 如何处理瞬态 API 错误。这有助于确保在生产环境中可靠运行,在这些环境中,临时网络问题、速率限制和服务器过载可能导致间歇性故障。

默认行为

默认情况下,SDK 使用以下重试配置:
  • 最大重试次数: 5 次尝试
  • 初始延迟: 2 秒
  • 退避: 指数(2^attempt)
  • 抖动: 延迟的 10-90%(随机)
这意味着:
  • 尝试 1:立即
  • 尝试 2:~2-3.6 秒延迟
  • 尝试 3:~4-7.2 秒延迟
  • 尝试 4:~8-14.4 秒延迟
  • 尝试 5:~16-28.8 秒延迟
最大持续时间:所有重试约 57 秒(最坏情况)

自定义配置

何时发生重试

SDK 会在以下情况下自动重试:
  • 临时服务器问题 (OlostepServerError_TemporaryIssue)
  • 超时响应 (OlostepServerError_NoResultInResponse)
其他错误(身份验证、验证、资源未找到等)会立即失败而不重试。

传输与调用者重试

SDK 有两个重试层:
  1. 传输层:处理网络级别的连接失败(DNS、超时等)
  2. 调用者层:处理 API 级别的瞬态错误(由 RetryStrategy 控制)
两个层是独立的并且具有单独的配置。总最大持续时间是两个层的总和。

计算最大持续时间

配置示例

以下是如何为不同用例配置重试策略的一些示例。

保守策略

激进策略

无重试(快速失败)

高吞吐量策略

理解抖动

抖动添加了随机化以防止“雷鸣般的羊群”问题,当许多客户端同时重试时会出现。抖动计算如下:
例如,initial_delay=2.0,jitter_min=0.1,jitter_max=0.9:
  • 尝试 0:base=2.0s,jitter=0.2-1.8s,final=2.2-3.8s
  • 尝试 1:base=4.0s,jitter=0.4-3.6s,final=4.4-7.6s
  • 尝试 2:base=8.0s,jitter=0.8-7.2s,final=8.8-15.2s

最佳实践

对于生产应用程序

对于开发/测试

对于批量操作

监控和调试

SDK 在 DEBUG 级别记录重试信息:
启用调试日志记录以监控重试行为:

错误处理

当所有重试都耗尽时,原始错误会被抛出:

性能考虑

  • 内存:每次重试尝试都会为请求/响应对象使用额外的内存
  • 时间:启用重试后,总操作时间可能会显著延长
  • API 限制:重试计入你的 API 使用限制
  • 网络:由于重试尝试,更多的网络流量
根据你的应用程序对可靠性与性能的要求选择重试策略。

详细错误处理

异常层次结构

Olostep SDK 为不同的故障场景提供了全面的异常层次结构。所有异常都继承自 Olostep_BaseError。 有三种主要错误类型直接继承自 Olostep_BaseError:
  1. Olostep_APIConnectionError - 网络级别的连接失败
  2. OlostepServerError_BaseError - 由 API 服务器引发的错误
  3. OlostepClientError_BaseError - 由客户端 SDK 引发的错误

为什么连接错误是分开的

Olostep_APIConnectionError 与服务器错误分开,因为它表示在 API 能够处理请求之前发生的网络级别故障。这些是传输层问题(DNS 或 HTTP 失败、超时、连接被拒绝等),而不是 API 级别的错误。HTTP 状态代码(4xx、5xx)被视为 API 响应,尽管它们表示问题,但被归类为服务器错误。

推荐的错误处理

对于大多数用例,捕获基础错误并打印错误名称:
这种方法捕获所有 SDK 错误,并提供有关出错原因的清晰信息。错误名称(例如,OlostepServerError_AuthFailed)足够描述性,可以理解问题所在。

细粒度的错误处理

如果你需要更具体的错误处理,请直接捕获特定的错误类型。避免使用 OlostepServerError_BaseError 或 OlostepClientError_BaseError - 这些基类仅指示谁引发了错误(服务器与客户端),而不是谁负责修复它。这是一个实现细节,对错误处理逻辑没有帮助。 相反,捕获指示实际问题的特定错误类型:

配置

环境变量

获取帮助

资源

PyPI 包

在 PyPI 上查看

获取 API 密钥

免费注册