Nstproxy 现已升级为 Nstdata。了解此次变化。 周一至周五 09:00 - 18:00(UTC+08:00) 公司地址
19H MAXGRAND PLAZA NO.3 TAI YAU STREET SAN PO KONG, KOWLOON HONG KONG
©2026 NST LABS TECH LTD. 保留所有权利。 电子商务产品提取:结构化数据指南Lena ZhouGrowth & Integration Specialist
从电子商务页面获取结构化产品数据
TL;DR
- 产品数据提取仅在价格、货币、变体和可用性指向同一报价时成功。
- 产品记录仅在价格、货币、可用性和变体指向同一报价时有效。
- 产品 JSON-LD 是一个有用的候选源,但需要与已渲染的选定报价进行比较。
- 对于审核过的目录部分使用有限发现,并将类别页面排除在产品记录之外。
- Nstdata Crawl 处理 JavaScript 渲染和受管理请求中的代理路由;其文档列出了六个输出类别:Markdown、HTML、原始数据、PDF、截图和链接。
什么算作结构化产品数据?
结构化产品数据是针对特定产品或变体的类型化记录:名称、标识符、选定选项、价格、货币、可用性和源 URL。电子商务页面通常在一屏上显示多个报价、区域价格、订阅、捆绑或选定的变体。通用的页面到 JSON 包装器无法解析哪个值属于哪个报价。在扩展之前,定义每个字段的记录身份和证据。
Nstdata Crawl 可以将 URL 或一组有限链接页面转化为 AI 代理、RAG 索引或数据管道的材料。根据特定结果使用自己的字段规则和接受检查:检索允许的产品页面并将可见或嵌入的详细信息映射到经过验证的记录中。Nstdata 全站爬取指南 解释了站点级别选项。
对于这里涵盖的更窄的任务,Nstdata 网站到 JSON 指南 为选择第一个代表性页面提供了有用的背景。
开始之前需要什么?
选择一个公共或授权的产品页面,并记录所选变体、预期 SKU、价格文本、货币、可用性和最后更新的上下文。确定该网站是否提供官方供给或 API;在适当的情况下使用它。为售价与清单价格、缺货标签、多卖家和区域货币设置规则。将敏感的客户或账户数据排除在工作流程之外。
Crawl API 文档 使用 https://api.nstdata.io、x-api-key 头和 Content-Type: application/json。在运行方法之前准备这些字段:
| 字段 | 要提供的内容 |
|---|
url | 一个允许的 HTTPS 页面或网站入口 URL |
formats | 请求的输出,例如 ["markdown"] 或 ["html","screenshot"] |
onlyMainContent | 当主内容选择符合任务时为 true |
| , |
maxDepth
maxPages
includeUrls, excludeUrls | 在范围内保持发现的 URL 模式 |
timeout | 当默认设置不合适时的任务超时时间(以毫秒为单位) |
标准的受管理请求没有单独的代理主机、端口、用户名、密码或协议字段。在运行大规模任务之前,请检查 当前 Crawl 定价页面 以了解帐户限制和费用。
审核目标的访问政策和范围。机器人排除协议 定义了爬虫如何读取机器人规则;它不授予内容使用权。将凭据和私人数据排除在示例和诊断日志之外。
产品页面如何暴露结构化数据?
Nstdata Crawl 可以渲染 JavaScript 很重的产品页面,获取 Markdown 或 HTML,并爬取有限类别部分。其产品页面宣传 JSON 输出,而可见的 API 示例并未指定任意产品架构。将 Crawl 作为检索和清理层,然后解析发布的产品结构化数据或审核的 DOM 元素,并与可见页面进行验证。受管理的代理路由是内置的;标准请求不需要单独的代理凭据。
对于已知的 URL,单页爬取检索一个结果。对于网站部分,POST /api/v1/crawl 在提供的深度、页面计数和 URL 规则内递归地发现链接页面。文档 列出了 Markdown、HTML、原始数据、PDF、截图和链接作为六个输出类别;产品页面还推广 JSON,但特定领域的 JSON 架构仍需要明确的字段映射。保持每个接受的记录与其源 URL 和返回的元数据关联。
在扩展之前,测试一个代表性的 JavaScript 很重的页面。渲染的状态可能依赖于时机、区域、同意或已登录的会话。将返回的 HTML 或截图与预期页面状态进行比较;如果它们不同,则仅调整已记录的渲染和等待控制。
如何从电子商务页面提取产品数据?
将一个渲染的报价与其嵌入的标记进行比较,然后自动化已知的产品URL或一个有限的目录部分。在选定的变体和地区明确后再映射字段。
方法 1:在实验平台中检查一个产品
第一步:打开一个代表性的产品
使用 Dashboard → Crawl Playground 和授权的产品URL。[截图:URL、渲染和输出格式。]
第二步:请求HTML和视觉证据
选择HTML和截图输出。如果价格或库存在JavaScript之后加载,请使用在实验平台中可见的文档化就绪等待。
第三步:比较变体
在截图中检查选定的变体与任何嵌入的 Product JSON-LD 和可见价格。不要将父产品名称与不同变体的报价混淆。
方法 2:通过API检索页面
第一步:安全存储密钥
将 NSTDATA_API_TOKEN 保存在服务器上,并将其作为 x-api-key 发送。
第二步:请求页面
使用如下文档化的快速开始抓取格式,提取HTML和Markdown。检查当前实验平台生成的路由,因为文档对其他抓取路由的标记不一致。
从你的Nstdata账户在终端中设置 NSTDATA_API_TOKEN,然后运行文档化的快速开始请求。公共文档对其他同步和异步路由的标记不一致;在生产使用前,请与您账户的实验平台生成的请求进行比较。
curl --output crawl-response.json --request POST "https://api.nstdata.io/api/v1/crawl/scrape/submit-sync" \
--header "x-api-key: ${NSTDATA_API_TOKEN}" \
--header "Content-Type: application/json" \
--data '{"url":"https://example.com/product/sample","formats":["html","markdown"]}'
响应保存到 crawl-response.json。在使用任何返回的内容之前,检查嵌套的 data.success、data.status 和 data.data.metadata.statusCode 字段。
第三步:映射字段
在可用时解析嵌入的产品标记,并将其值与可见内容进行比较。如果清理后的HTML省略了JSON-LD脚本,请在假设没有结构化标记之前检查您账户中的原始数据表示。
如果页面发布产品JSON-LD,将原始HTML保存为 page.html 并在映射字段之前检查其声明的报价。以下代码提取产品节点,而不假装每个商店都使用相同的报价模式:
from bs4 import BeautifulSoup
import json
soup = BeautifulSoup(open("page.html", encoding="utf-8").read(), "html.parser")
nodes = []
for script in soup.select('script[type="application/ld+json"]'):
try:
data = json.loads(script.string or script.get_text())
except json.JSONDecodeError:
continue
stack = data if isinstance(data, list) else [data]
while stack:
item = stack.pop()
if isinstance(item, dict):
if item.get("@type") == "Product" or "Product" in (item.get("@type") or []):
nodes.append(item)
graph = item.get("@graph", [])
stack.extend(graph if isinstance(graph, list) else [graph])
if not nodes:
raise ValueError("没有找到产品JSON-LD;检查渲染的DOM")
for product in nodes:
print(json.dumps({"name": product.get("name"), "sku": product.get("sku"),
"offers": product.get("offers")}, ensure_ascii=False, indent=2))
使用 python3 -m pip install beautifulsoup4 安装Beautiful Soup。将每个打印的报价视为候选项:在存储产品记录之前与渲染页面比较变体、价格、货币和可用性。
方法 3:抓取一个有限的目录部分
第一步:设置范围
从一个类别URL开始,并设置小的 maxDepth、maxPages,以及包容/排除规则以避免购物车、搜索和账户路径。
第二步:收集页面记录
提交 POST /api/v1/crawl,轮询状态并检索所有页面。明确识别产品详细页面;类别页面不是产品记录。
对于一个站点作业,替换示例主机和路径为您批准的范围,然后提交有限请求:
curl --output crawl-submit.json --request POST "https://api.nstdata.io/api/v1/crawl" \
--header "x-api-key: ${NSTDATA_API_TOKEN}" \
--header "Content-Type: application/json" \
--data '{"url":"https://example.com/docs/","formats":["html"],"maxDepth":2,"maxPages":10,"includeUrls":["*example.com/docs/*"],"excludeUrls":["*example.com/admin/*"],"ignoreQuery":true}'
从 crawl-submit.json 中复制 data.id 作为您的抓取ID。
第三步:验证报价
通过稳定的产品和变体ID去重,在不改变含义的情况下标准化货币,并拒绝无法将所选报价与提取值绑定的页面。
方法 4:使用静态页面发布的产品 JSON-LD
最适合原始 HTML 已包含完整产品标记的公共产品页面。
步骤 1:保存产品 HTML
将一个授权的产品页面保存为 page.html,并记录所选变体、显示的价格、货币和库存状态。
步骤 2:提取候选报价
运行方法 2 中显示的产品 JSON-LD 解析器。如果未找到产品节点,请不要伪造字段;如果有可用的渲染表示或官方产品馈送,请使用它。
步骤 3:验证所选报价
选择与所选变体匹配的报价,并将每个存储值与可见产品页面进行比较。静态标记可能过时或遗漏区域特定价格;当这种区别很重要时,请使用 Crawl 的渲染页面和屏幕截图。
如何验证输出?
记录源 URL、提交时间、请求格式、非秘密选项、任务 ID(如果有)、返回的页面状态,以及每个记录通过或未通过审查的原因。检查内容以及 API 信封。如果响应中包含 markdownRef、htmlRef、rawDataRef、screenshotRef 或 pdfRef,请使用 GET /api/v1/crawl/storage/read?st={ref} 检索该令牌。
为什么产品记录可能包含错误的报价?
产品数据提取可能会失败,因为页面显示多个报价或默认变体。使用症状表识别故障层,然后再更改限制或重试。
| 症状 | 可能原因 | 下一步行动 |
|---|
| 选定变体的价格错误 | 页面显示多个报价或默认变体。 | 捕获所选选项并比较可见报价上下文。 |
| 清理的 HTML 中没有 JSON-LD | 清理可能省略脚本元素。 | 在更改映射器之前检查原始页面数据或可见 DOM。 |
| 类别页面被视为产品 | 发现包括列表页面。 | 对页面模板进行分类,仅保留已审查的详细页面。 |
Nstdata 的文档列出了任务级错误,如 access_denied、timeout、parse_error 和 internal_error。外部 HTTP 200 仍然可以伴随失败的任务。检查响应中的 success、status、errorCode 和 errorMessage(如果存在)。仅对您可以访问的网站的瞬态故障进行重试。
哪种方法最合适?
使用 Playground 审查变体、API 获取已知产品 URL,或在审核过的目录部分使用有界站点爬虫。仅在其报价与所选变体匹配时,使用静态页面上的本地 JSON-LD 解析。 Nstdata 网站爬虫概述 提供了有关站点路线的更多详细信息。
首次成功运行后您应该怎么做?
保存批准的配置和一个源支持的输出记录,然后在一小部分不同的页面模板上重复。只有在这些记录通过相同的接受检查后,才增加范围。
FAQ: 你还需要了解什么?
公共API文档确认了页面输出,但没有明确定义任意产品字段的提取。请在您的应用程序中映射和验证字段。
不可以。结构化标记可能过时或指向不同的变体;将其与渲染的优惠进行比较。
最好使用小数安全值或原始文本加上货币;避免静默舍入和区域假设。
问:产品数据提取是否需要使用Nstdata Crawl的单独代理配置?
标准的管理Crawl请求不需要单独的代理Host、Port、Username、Password或Protocol字段。请在您的帐户中确认任何可选的自定义代理选择及相关使用费用。
问:HTTP 200是否证明产品数据提取结果是可用的?
不。请在将其用于AI或数据工作流程之前,检查嵌套任务结果、页面状态、预期字段和主体的一致性。
Oct. 28th 2026
支持 JavaScript 渲染,成功率达 99.8%
将任意网站转换为 Markdown、HTML、JSON、链接、PDF 等格式,无需管理爬取基础设施。