flowchart LR
A[Application or RAG pipeline]--> B[Nstdata Crawl API] B --> C[Managed browser, proxy, retry and crawl tasks] C --> D[Markdown, HTML, metadata or resource references] D --> A
flowchart LR
A[Application, API or schedule]--> B[Ready-made or custom Apify Actor] B --> C[Actor runtime and configured crawl logic] C --> D[Dataset or key-value store] D --> A
import os
from nstdata_ai_crawl import NstDataClient, ScrapeRequestDto, Format
with NstDataClient(os.environ["NSTDATA_API_TOKEN"])as client: result = client.submit_scrape_task_sync(ScrapeRequestDto( url="https://example.com/", formats=[Format.MARKDOWN], timeout=60000, onlyMainContent=True,))print(result.data.get_markdown())
第二个代码片段运行 Apify 的 特定第一方 Actor,限制为一个页面,然后读取其数据集:
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_API_TOKEN"])run = client.actor("apify/website-content-crawler").call(run_input={"startUrls":[{"url":"https://example.com/"}],"maxCrawlPages":1,"saveMarkdown":True,})if run isNone:raise RuntimeError("Actor did not complete within the client wait period")for item in client.dataset(run["defaultDatasetId"]).list_items().items:print(item.get("markdown")or item.get("text")or"")
Apify 当前的 Python 客户端文档显示了跨版本的对象风格和字典风格运行示例。在本地烟雾测试中确认已安装客户端的运行对象形状。重要的区别在于架构:Nstdata 返回抓取响应;Apify 启动一个 Actor 并检索数据集项。
错误处理和生产就绪
对于 Nstdata,HTTP 200 可能意味着“任务已接受”,而不是“页面可用”。检查嵌套的 success、status、页面状态代码和非空内容;对于大型有效载荷,遵循引用。对于 Apify,检查 Actor 运行状态,然后检查数据集行和每页输出。在任何情况下,区分传输错误、目标 403/404、空体以及您处理的内容被截断的有效页面,以及没有相关文本的有效页面。仅对临时故障进行重试,限制总尝试次数,并保留包含 URL、供应商作业 ID 和原因的死信记录。
哪个更适合初创公司、开发者和企业团队?
团队规模是一个弱代理。根据您需要多少工作流自定义以及谁将维护它来做出选择。
团队/工作负载
第一个测试选项
决策问题
单人原型,少量公共 URL
Nstdata 或现成的 Apify Actor
哪个在设置您的 URL 时生成可用的 Markdown 更少?
刷新文档 RAG 索引的初创公司
两者
网站发现、清理和刷新行为是否符合索引的质量标准?
扩展数据团队与多个目标
两者都有,带适配层
大部分工作是标准化的,还是每个目标需要自定义逻辑?
专业收集团队
Apify 自定义 Actor 或混合
您是否需要对导航和提取进行代码级控制?
企业计划
同时试点;审查合同
哪个在书面上满足支持、安全性、并发和成本要求?
独立开发者和小型初创公司
对于一个小的概念验证,比较第一个可用页面和第一个完整的文档爬取。Apify Store Actor 的配置速度可以和 API 请求一样快;Nstdata 可能更容易嵌入到现有服务中。试用积分有助于评估适合度,但免费层的结果并不能预测生产单位成本。
扩展 AI 和数据工程团队
周期性 RAG 更新需要确定的范围、去重、结果存储和监控。Nstdata 的通用 API 可以简化标准化的摄取工作。Apify 的数据集、调度和运行工具可以减少编排代码。评估每个选项给团队留存的维护工作量。
迁移工作负载,而不是一次性迁移整个平台。决定性的问题是当前 Actor 是否主要检索 Web 内容或编码特定于业务的自动化。
Nstdata 能否替代您现有的 Apify Actor?
现有 Actor 行为
可能的 Nstdata 路径
主要差距验证
获取 URL → 清理的 Markdown
单页爬取
内容保真度,元数据映射
爬取文档部分
网站爬取
发现,排除,增量更新
处理提供的 URL 列表
并发异步爬取任务
队列,速率限制;没有独立的批量 URL API
点击通过自定义多步骤流程
根据情况评估浏览器操作
逻辑可能需要保留在自定义 Actor 中
爬取 + 丰富 + 调用其他系统
爬取加上您的应用程序工作流
Nstdata 不是一个 Actor 运行时
API、数据模式和任务迁移
Apify 使用者通常发送 Actor 输入,等待运行,并读取数据集行。Nstdata 使用者发送爬取/爬网参数,当异步时轮询任务 ID,解析任何 markdownRef,并映射元数据。如果移除,Apify 的调度和 Webhook 需要一个调度器和轮询工作者。在切换之前,清点每个 Actor 输入、数据集字段、存储 URL、回调、警报和下游转换。在验证期间,将旧 Actor 保留在功能标志后面。