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

抓取URL

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

安装

# pip install requests

import requests

使用方法

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

endpoint = "https://api.olostep.com/v1/scrapes"
payload = {
    "url_to_scrape": "https://en.wikipedia.org/wiki/Alexander_the_Great",
    "formats": ["markdown", "html"]
}
headers = {
    "Authorization": "Bearer <YOUR_API_KEY>",
    "Content-Type": "application/json"
}

response = requests.post(endpoint, json=payload, headers=headers)
print(json.dumps(response.json(), indent=2))

响应

API返回一个scrape对象作为响应。 scrape有一些属性,如idresult result对象有以下字段(根据formats参数,有些可能为null):
  • html_content:页面的HTML内容。传递formats: ["html"]以获取此内容。
  • markdown_content:页面的MD内容。传递formats: ["markdown"]以获取此内容。
  • text_content:页面的文本内容。传递formats: ["text"]以获取此内容。
  • json_content:页面的JSON内容。传递formats: ["json"]以获取此内容,并提供parserllm_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:页面的元数据。
{
  "id": "scrape_6h89o8u1kt",
  "object": "scrape",
  "created": 1745673871,
  "metadata": {},
  "retrieve_id": "6h89o8u1kt",
  "url_to_scrape": "https://en.wikipedia.org/wiki/Alexander_the_Great",
  "result": {
    "html_content": "<html...",
    "markdown_content": "## Alexander the Great...",
    "text_content": null,
    "json_content": null,
    "screenshot_hosted_url": null,
    "html_hosted_url": "https://olostep-storage.s3.us-east-1.amazonaws.com/text_6h89o8u1kt.txt",
    "markdown_hosted_url": "https://olostep-storage.s3.us-east-1.amazonaws.com/markDown_6h89o8u1kt.txt",
    "json_hosted_url": null,
    "text_hosted_url": null,
    "links_on_page": [],
    "page_metadata": { "status_code": 200, "title": "" }
  }
}

抓取格式

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

提取结构化数据

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

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

定义formats: ["json"]并提供解析器id
import requests, json

endpoint = "https://api.olostep.com/v1/scrapes"
payload = {
  "url_to_scrape": "https://www.google.com/search?q=alexander+the+great&gl=us&hl=en",
  "formats": ["json"],
  "parser": { 
    "id": "@olostep/google-search" 
  }
}
headers = {
    "Authorization": "Bearer <YOUR_API_KEY>", 
    "Content-Type": "application/json"
}

res = requests.post(endpoint, json=payload, headers=headers)
print(json.dumps(res.json(), indent=2))
Olostep有一些为热门网站预构建的解析器,但你也可以通过仪表盘创建自己的解析器,或请我们的团队为你创建。 解析器是自我修复的,并会更新到网站的最新版本。

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

提供llm_extract,包括JSON Schema(schema)和/或自然语言指令(prompt)。你可以同时传递这两个参数,但如果都提供了,schema优先。 相反,如果你只传递一个prompt,LLM将根据提示提取数据,并自行决定数据结构。
import requests, json

endpoint = "https://api.olostep.com/v1/scrapes"
payload = {
  "url_to_scrape": "https://www.berklee.edu/events/stefano-marchese-friends",
  "formats": ["markdown", "json"],
  "llm_extract": {
    "schema": {
      "event": {
        "type": "object",
        "properties": {
          "title": {"type": "string"},
          "date": {"type": "string"},
          "description": {"type": "string"},
          "venue": {"type": "string"},
          "address": {"type": "string"},
          "start_time": {"type": "string"}
        }
      }
    }
  }
}
headers = {
    "Authorization": "Bearer <YOUR_API_KEY>",
    "Content-Type": "application/json"
}
res = requests.post(endpoint, json=payload, headers=headers)
print(json.dumps(res.json(), indent=2))
注意:result.json_content返回的是字符串化的JSON。如果你需要对象,请在代码中解析它。

使用动作与页面交互

在抓取之前执行动作以与动态网站交互。支持的动作有:
  • wait,带milliseconds
  • click,带selector
  • fill_input,带selectorvalue
  • scroll,带directionamount
在其他动作之前/之后使用wait通常很有用,以便页面加载。

示例

import requests, json

endpoint = "https://api.olostep.com/v1/scrapes"
payload = {
  "url_to_scrape": "https://example.com/login",
  "formats": ["markdown"],
  "actions": [
    {"type": "fill_input", "selector": "input[type=email]", "value": "john@example.com"},
    {"type": "wait", "milliseconds": 500},
    {"type": "fill_input", "selector": "input[type=password]", "value": "secret"},
    {"type": "click", "selector": "button[type=\"submit\"]"},
    {"type": "wait", "milliseconds": 1500}
  ]
}
headers = {
    "Authorization": "Bearer <YOUR_API_KEY>", 
    "Content-Type": "application/json"
}
res = requests.post(endpoint, json=payload, headers=headers)
print(json.dumps(res.json(), indent=2))
响应将包括任何请求的格式(例如,markdown_content)。

使用案例

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

内容分析与研究

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

电子商务与零售

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

营销与内容创作

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

数据应用

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

监控与警报

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

出版与媒体

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

金融应用

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

技术应用

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

集成场景

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

定价

默认情况下,抓取费用为1个信用。如果你还使用解析器,费用根据解析器不同(1-5个信用)。如果你使用LLM提取,费用为20个信用。