Skip to main content
最新的安装说明、示例和源代码请查看 TypeScript SDK GitHub 仓库。
使用官方 Decodo TypeScript SDK,为搜索引擎、电商平台、社交媒体、AI 工具等构建强类型的抓取工作流。
  • 完整类型化的目标和参数,支持 IDE 自动补全
  • 同步、异步和批量抓取方法
  • 通过 Web Data API 提供网页搜索、站点地图和爬取功能
  • 原生支持 fetch;需要 Node.js 18 或更高版本
  • 类型化的错误层级,让集成更安全

什么是 Decodo TypeScript SDK?

Decodo TypeScript SDK 为 Google、Amazon、TikTok、YouTube、ChatGPT、Perplexity 等 Decodo 目标提供类型化接口。您无需手动构造 HTTP 请求和校验载荷,而是直接在编辑器中使用完整类型化的方法和特定目标的参数。

为什么使用该 SDK?

  • 强类型与自动补全:目标参数完整类型化,带来更好的编辑器支持和更少的错误。
  • 统一的抓取接口:通过同一个 SDK 使用搜索引擎、电商平台、社交媒体和 AI 工具。
  • 异步与批量工作流:创建抓取任务、轮询任务状态,并大规模处理批量请求。
  • 类型化错误:安全地处理身份验证、参数校验、超时和速率限制等失败情况。
  • 配置极简:使用原生 fetch,无需额外的 HTTP 客户端。

要求

  • Node.js 18 或更高版本,以支持原生 fetch
  • 推荐使用 TypeScript 5.0 或更高版本,以获得最佳类型推断

安装

快速开始

创建一个新项目:
npm init -y 创建的是 CommonJS 包,因此使用 import 的文件会失败并报 SyntaxError: Cannot use import statement outside a module。请先将该包切换为 ES 模块:
在 Decodo 控制面板中,从您的 Web Data API 订阅复制 Web Data API 密钥。请将其存储在环境变量中,避免写入源代码:
较旧的计划只有基本身份验证令牌。请将其作为 token 传入,而不是 apiKey——详见下文的”配置”一节。
然后创建 main.js 并初始化客户端:
运行脚本:
请保持该文件为纯 JavaScript。诸如 process.env.DECODO_API_KEY! 中的非空断言等 TypeScript 专有语法,在 node main.js 下会报 SyntaxError: Unexpected token '!'。该写法只应出现在您会编译或通过 TypeScript 加载器运行的 .ts 文件中。

配置

请传入 apiKey 或 token 之一,切勿同时传入:
同时设置两者会抛出 webScrapingApi accepts either token or apiKey, not both. Provide only one.;两者都不设置会抛出 webScrapingApi requires apiKey or token in DecodoConfig.;非法的 baseUrl 会抛出 webScrapingApi baseUrl must be a valid URL.您传入的凭据还决定了 SDK 调用哪个 API。apiKey 使用位于 data.decodo.com 的 Web Data API,这也是使用搜索、站点地图和爬取功能的唯一途径。token 使用位于 scraper-api.decodo.com 的旧版 Web Scraping API,该 API 仅支持抓取。

抓取

通过 client.webScrapingApi 访问该 API。下面的示例假定您已导入 Target,并在需要时一并导入 DecodoClient:

同步抓取

等待抓取结果返回后再继续:

异步抓取

创建抓取任务并立即返回。任务状态和结果需另行轮询:

批量抓取

在单个请求中发送多个查询或 URL:

Web Data API:搜索、站点地图和爬取

这些方法由位于 data.decodo.com 的 Web Data API 提供,需要 apiKey。在配置了基本身份验证 token 的客户端上调用它们,会在发出任何请求之前就抛出异常,例如:search() requires webScrapingApi.apiKey. A Basic token cannot call the Data API.

搜索

运行一次网页搜索并返回结果页面:

站点地图

发现站点上的链接:

爬取

crawl() 会启动爬取、轮询其状态,并在任务结束后返回所有页面:
这里返回的 status 是完整的状态对象,而不是字符串——状态本身位于 status.status。像 if (status === 'done') 这样的判断永远不会成立。该对象还包含 crawl_id、discovered、completed、failed 和 in_flight。
若要逐步控制爬取流程,请先启动爬取,再分别轮询状态和页面:
对于大规模爬取,listCrawlPages() 每次返回一批基于游标分页的结果。请把 next 的值作为 cursor 再次传入,直到它为空:

支持的目标

每个目标接受一个主输入参数(url、query、product_id 或 prompt),以及可选的配置项。

搜索引擎

电商

社交媒体

AI 工具

其他

通用目标与原始 URL 抓取

有十二个目标早于当前的 API schema。 Decodo 各 SDK 均由同一份 schema 生成;TypeScript SDK 目前提供的是 v2.1.1 的目标集合,而 Python 和 Go SDK 已是 v2.3.0。下列十二个目标仅存在于 TypeScript SDK 中:ecommerce、google_maps、google_shopping_product、google_shopping_search、google_suggest、google_trends_explore、instagram_graphql_profile、lowes_search、universal_ecommerce、youtube_search_max、youtube_transcript、youtube_video其中大多数仍可正常使用。有三个无法使用,目前会返回错误:google_suggest、youtube_video 和 google_shopping_product。请在新代码中避免使用这三个目标。如果您需要 Google Shopping 数据,google_shopping_search 可以正常工作。
Target.UniversalEcommerce 未列入上述表格,因为它不接受 url、query、product_id 或 prompt 这类主输入参数。它只接受 callback_url 等可选配置字段。
完整的目标列表和参数详情,请参阅目标列表和参数。

错误处理

该 SDK 会抛出与 API 错误码对应的类型化错误:
AuthenticationError、RateLimitError 和 ValidationError 都继承自 DecodoError。TimeoutError 不在 DecodoError 的层级之内,因此请单独处理。

相关内容

  • CLI:在命令行中运行 Decodo 抓取工作流。
  • Python SDK:将 Decodo API 集成到 Python 项目中。
  • Go SDK:将 Decodo API 集成到 Go 项目中。
  • MCP 服务器:将 AI 智能体和兼容 MCP 的工具连接到 Decodo。
  • GitHub 仓库:查看 TypeScript SDK 的源代码、示例和最新版本。

支持

需要帮助或只是想打个招呼?我们的支持团队全天候为您服务。
您也可以随时通过电子邮件 support@decodo.com 联系我们。

反馈

找不到您要找的内容?请求一篇文章!
有反馈意见?分享您对我们如何改进的想法。