跳转到主要内容
通过 Olostep 的 /v1/scrapes 端点,你可以实时从任何 URL 提取适合 LLM 的 Markdown、HTML、文本、截图或结构化 JSON。
  • 输出干净的 markdown、结构化数据、截图或 html
  • 通过 Parsers 或 LLM 提取 提取 JSON
  • 处理动态内容:js 渲染的网站、通过动作的登录流程、PDF
  • 使用 storage 参数控制结果的保留时间
有关 API 详细信息,请参阅 抓取端点 API 参考。

抓取 URL

使用 /v1/scrapes 端点抓取单个 URL 并选择输出格式。

安装

用法

你可以使用该端点抓取单个 URL 并选择输出格式。必选参数是 url_to_scrape 和 formats。 其他一些常见参数包括 wait_before_scraping(以毫秒为单位)、remove_css_selectors(默认、无或选择器数组)和 country。

响应

API 返回一个 scrape 对象作为响应。 scrape 有一些属性,如 id 和 result。 result 对象有以下字段(根据 formats 参数,有些可能为 null):
  • html_content: 页面 HTML 内容。传递 formats: ["html"] 获取此内容。
  • markdown_content: 页面 MD 内容。传递 formats: ["markdown"] 获取此内容。
  • text_content: 页面文本内容。传递 formats: ["text"] 获取此内容。
  • json_content: 页面 JSON 内容。传递 formats: ["json"] 并提供 parser 或 llm_extract 参数获取此内容。
  • screenshot_hosted_url: 截图的托管 URL。
  • html_hosted_url: HTML 内容的托管 URL。
  • markdown_hosted_url: Markdown 内容的托管 URL。
  • json_hosted_url: JSON 内容的托管 URL。
  • text_hosted_url: 文本内容的托管 URL。
  • links_on_page: 页面上的链接。
  • page_metadata: 页面元数据。

缓存

为了优化速度,Olostep 提供了一个可选的共享缓存层,用于 HTML、Markdown、文本和解析的 JSON 结果。

工作原理

当请求抓取时,Olostep 会检查是否存在具有相同参数的匹配抓取。如果找到足够新的匹配内容,内容将立即从 Olostep 的存储中提供,而无需启动新的浏览器抓取。
  • 共享缓存: 缓存是全球共享的。如果在你的新鲜度窗口内,另一个请求抓取了完全相同的 URL 和相同的配置,你将受益于速度提升。
  • 后处理仍然是实时的: 操作如 llm_extract 和 links_on_page 过滤器在缓存文档上即时运行。你只缓存核心页面检索,保持你的结构化提取动态。

新鲜度和 max_age

默认情况下,生产 API 始终执行实时抓取以保证实时准确性。你可以使用 max_age 参数选择加入缓存。
  • 默认 API 行为 (max_age: 0): 每个 API 请求都会触发新的抓取。
  • 默认 Playground 行为: 在仪表板 playground 中,max_age 默认为 24 小时(86400 秒)。
  • 最大年龄: 缓存的硬限制为7 天(604800 秒)。任何请求超过此限制的 max_age 将回退到最多 7 天。

使用示例

何时跳过缓存?

当你的请求需要以下内容时,缓存会自动被绕过(强制进行实时抓取):
  • 交互式会话: 使用 session_id 或加载自定义浏览器 context 的请求。
  • 截图: 任何包含 screenshot 格式或设置截图选项的请求都会绕过缓存。
  • 特殊文件类型: 二进制文件下载或原始 PDF 渲染。
  • 调试和网络: 捕获 network_calls 或使用异步解析器作业。

存储

抓取结果默认保留约 7 天。传递一个 storage 对象以将结果保留更长时间——或无限期保留——以便你可以稍后再次获取它。结果、其托管 URL 和 GET /v1/scrapes/{scrape_id} 在该窗口内保持可用。 max_age 控制新请求是否可以重用缓存页面。storage.expires_in 控制此抓取的结果保留多长时间。有关 max_age,请参阅 缓存。 storage 在所有计划中可用于 POST /v1/scrapes。

用法

提取链接

在请求中传递一个 links_on_page 对象以收集页面上找到的链接。所有链接都以绝对 URL 返回。
  • include_links / exclude_links: 以 glob 模式匹配每个链接的 URL 路径。
  • query_to_order_links_by: 按与此文本的相关性重新排序返回的链接。
Glob 模式匹配路径段。单个 * 不会跨越 /,所以 "/blog/*" 匹配 "/blog/post-1" 但不匹配索引 "/blog" 本身——而且它永远不会匹配 "/blog?tag=x" 因为查询字符串不是路径的一部分。要包括索引,请使用 "/blog*" 或 "{/blog,/blog/**}"。

抓取格式

通过 formats 选择一种或多种输出格式:
  • markdown: 适合 LLM 的 markdown
  • html: 清理后的 HTML
  • text: 纯文本
  • json: 结构化输出(通过解析器或 llm_extract)
  • raw_pdf: 提取的原始 PDF 字节到托管 URL
  • screenshot: 通过动作设置以捕获截图并返回托管 URL
输出键作为 result 中的 *_content 字段和 *_hosted_url 返回。

提取结构化数据

你可以通过两种方式提取结构化 JSON:使用 Parsers 或 LLM 提取。

使用解析器(推荐用于规模)

定义 formats: ["json"] 并提供解析器 id。
Olostep 有一些预构建的解析器用于 热门网站,但你也可以通过仪表板创建自己的解析器,或者让我们的团队为你创建。 解析器是自我修复的,并会更新到网站的最新版本。

使用 LLM 提取(模式和/或提示)

提供 llm_extract 一个 JSON Schema (schema) 和/或自然语言指令 (prompt)。你可以同时传递这两个参数,但如果同时提供,schema 优先。 相反,如果你只传递一个 prompt,LLM 将根据提示提取数据,并自行决定数据结构。
注意:在 Python SDK 中,result.json_content 已经是一个字典。在 Node SDK 和原始 API 中,它是一个 JSON 字符串,因此如果需要对象,请解析它(JSON.parse / json.loads)。 定价: llm_extract 每次抓取花费 10 个积分。为了降低成本,你可以使用自己的 API 密钥或启用基于使用的定价。联系 info@olostep.com 获取访问权限。

提取页面上的链接

使用 links_on_page 选项,你可以提取抓取页面上存在的所有链接。它接受以下参数来帮助过滤和排序提取的链接:
  • absolute_links (布尔值,默认:true): 如果为 true,则返回完整的 URL(例如,https://example.com/page),而不是相对路径(例如,/page)。
  • query_to_order_links_by (字符串): 按与提供的查询文本的相似性排序返回的链接,优先显示最相关的匹配项。
  • include_links (字符串数组): 使用 glob 模式过滤提取的链接。使用类似 *.pdf 的模式匹配文件扩展名,/blog/* 匹配特定路径,或完整 URL 如 https://example.com/*。支持通配符(*)、字符类([a-z])和交替({pattern1,pattern2})。
  • exclude_links (字符串数组): 使用 glob 模式排除特定链接,语法与 include_links 相同。

使用动作与页面交互

在抓取前执行动作以与动态网站交互。支持的动作:
  • wait 与 milliseconds
  • click 与 selector
  • fill_input 与 selector 和 value
  • scroll 与 direction 和 amount
在其他动作之前/之后使用 wait 以允许页面加载通常很有用。

示例

响应将包括任何请求的格式(例如,markdown_content)。

用例

以下是一些客户使用 /scrapes 端点的实际应用。

内容分析与研究

  • 竞争分析:从竞争对手网站提取产品详情、定价和特性
  • 市场研究:分析着陆页、产品描述和客户评价
  • 学术研究:从科学出版物或研究门户网站收集特定数据
  • 法律文档:从官方网站提取案例研究、法规或法律先例

电子商务与零售

  • 动态定价策略:从竞争商店获取实时产品定价
  • 产品信息管理:提取详细规格和描述
  • 库存/库存监控:检查其他零售商的产品可用性
  • 评论分析:收集特定产品的消费者反馈和情感

营销与内容创作

  • 内容策划:为新闻通讯提取相关文章和博客文章
  • SEO 分析:检查竞争对手的关键词使用、元描述和页面结构
  • 潜在客户生成:从商业目录或公司页面提取联系信息
  • 影响者研究:收集影响者资料的参与度指标和内容风格
  • 个性化社交媒体生成:通过分析客户网站创建 AI 驱动的社交媒体营销

数据应用

  • AI 训练数据收集:为机器学习模型收集特定示例
  • 自定义知识库构建:从软件网站提取文档或说明
  • 历史数据档案:在特定时间点保存网站内容
  • 结构化数据提取:将网页内容转换为格式化数据集进行分析

监控与警报

  • 合规监控:跟踪法律或监管网站的更改
  • 危机管理:监控新闻网站对特定事件或组织的提及
  • 事件跟踪:从场地或组织者网站提取即将举行的事件详情
  • 服务状态监控:检查特定平台或工具的服务状态页面

出版与媒体

  • 新闻聚合:从官方来源提取突发新闻
  • 媒体监控:跟踪新闻网站上的特定主题
  • 内容验证:提取信息以核实声明或陈述
  • 多媒体提取:为媒体库收集嵌入的视频、图像或音频

金融应用

  • 投资研究:从公司网站提取财务报表或年度报告
  • 经济指标:从政府或金融机构网站收集经济数据
  • 加密货币数据:提取实时价格和市值信息
  • 金融新闻分析:监控金融新闻网站以获取特定市场信号

技术应用

  • API 文档提取:收集技术文档以供参考
  • 集成测试:提取网站元素以验证第三方集成
  • 可访问性测试:分析网站结构以符合可访问性标准
  • 网页档案创建:捕获完整网站内容以进行历史保存

集成场景

  • CRM 系统:通过公司网站或 Linkedin 增强客户资料
  • 内容管理系统:导入相关的外部内容
  • 商业智能工具:补充内部数据与外部市场信息
  • 项目管理软件:从客户网站提取规格或要求
  • 自定义仪表板:将提取的数据与内部指标一起显示

错误处理

所有错误遵循共享的信封形状。检查 error.type 和 error.code 以进行程序分支:

DNS 失败 (400)

域名无法解析。检查 URL 是否有拼写错误。

TLS/SSL 错误 (502)

目标网站的 HTTPS 配置有问题或不兼容。error.detail 提供特定的 SSL 错误代码以进行诊断;error.code 始终为 tls_error。

请求超时 (504)

抓取未在等待预算内完成。页面可能很慢、受机器人保护或暂时不可用。此响应可以安全重试。

定价

抓取默认花费 1 个积分。如果你还使用 parsers,成本因解析器而异(1-5 个积分)。如果你使用 LLM 提取,则花费 10 个积分。