Skip to main content
向 Sorsa API 请求数据列表时,结果会分页返回。要获取完整数据集,需要通过游标逐页读取,直到没有更多数据。

游标分页的工作方式

Sorsa 使用游标分页,而非传统页码。社交媒体数据会不断新增内容,基于偏移量的分页可能跳过或重复结果,因此游标方式更可靠。 所有分页端点的流程相同:
  1. 首次请求不传游标。
  2. 响应包含数据和 next_cursor 字段。
  3. next_cursor 值传入下一次请求,以获取下一页。
  4. next_cursornull 或响应中没有该字段时,表示已到达末尾。
并非所有端点都分页。/info/tweet-info/score/about 等单对象端点返回一个结果,不包含游标。部分列表端点也在一次响应中返回全部数据,包括 /info-batch/tweet-info-bulk,以及 /top-followers 等加密货币分析列表。请检查端点参考是否包含 next_cursor 参数。

响应结构

分页响应采用以下两种结构之一:
这些分页用户和推文响应的数据位于 userstweets 中。将 next_cursor 视为不透明值:原样传回;当其为 null、空或缺失时停止。不要递增游标,也不要将其转换为 JavaScript Number。 响应包装结构和对象的完整说明请参阅响应格式

如何传递游标

游标字段始终叫 next_cursor。端点之间的唯一区别是传递位置:GET 端点使用查询参数,POST 端点使用 JSON 请求体。 GET 端点(如 /followers/follows/list-tweets)通过查询参数接收 next_cursor
POST 端点(如 /search-tweets/user-tweets/comments)通过 JSON 请求体接收 next_cursor

每页条数并不固定

由于 X 平台数据的特性,每页返回的数量可能不同。最多返回 20 条的端点,某一页可能只有 18、12 甚至 5 条,即使下一页仍有数据。 不要根据条数判断是否已到末尾。 少于预期条数并不表示没有更多数据。始终检查 next_cursor;只要它存在且不为 null,就还有页面可获取。

完整分页示例

以下示例将结果保存在内存中。大型任务应逐页写入存储、按字符串 ID 去重,并在页面保存后记录检查点。使用同一游标时,账号、查询、筛选条件和排序应保持不变。设置页面或请求预算,并检测重复游标,防止意外无限循环。单个循环中的延迟不会协调其他共享同一密钥的工作进程。 Python:分页获取粉丝(GET 端点)
Python:分页获取搜索结果(POST 端点)
JavaScript:分页获取粉丝(GET 端点)
JavaScript:分页获取搜索结果(POST 端点)

带错误处理的分页

生产环境中应结合分页和重试逻辑,避免单页失败中断整个数据收集任务。完整错误处理说明请参阅错误码

后续步骤

  • 速率限制:分页获取大规模数据集时,了解每秒 20 次上限
  • 错误码:处理分页循环中的 429 和其他错误
  • 响应格式:User 与 Tweet 对象的完整结构参考