主题
页面解析(实时)
接口说明
/v3/on_page/content_parsing/live 用于解析指定网页的页面,并返回结构化结果。输出通常:
- 页面中的链接 URL
- 锚文本
- 标题层级
- 主体文本
- 表格
- 页头 / 页脚
- 主题块
- 联系方式、评论、商品报价、评分等可识别信息
- 可选的 Markdown 版页面文本
请求方式
POST https://api.seermartech.cn/v3/on_page/content_parsing/live
计费说明
本接口按请求计费。费用与 Instant Pages 相同。
根据原文示例响应中的 cost: 0.000125,参考价约为:
参考价约 ¥0.0020 / 次
扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
请求体格式
所有 POST 数据需使用 UTF-8 编码的 JSON,并按数组形式传:
json
[
{
"url": "https://www.example.com/"
}
]请求参数
| 参数名 | 类型 | 填 | 说明 |
|---|---|---|---|
url | string | 是 | 要解析的页面 URL。示例:https://www.fujielectric.com/ |
custom_user_agent | string | 否 | 自定义抓取时使用的 User-Agent。默认值:Mozilla/5.0 (compatible; RSiteAuditor) |
browser_preset | string | 否 | 浏览器屏幕参数预设,可选:desktop、mobile、tablet。使用该字段时无需再传 browser_screen_width、browser_screen_height、browser_screen_scale_factor。**注意:**要使用该参数,需将 enable_javascript 或 enable_browser_rendering 设为 true |
browser_screen_width | integer | 否 | 自定义浏览器屏幕宽度(像素),范围:240 - 9999。设置后会忽略 browser_preset。**注意:**需将 enable_javascript 或 enable_browser_rendering 设为 true |
browser_screen_height | integer | 否 | 自定义浏览器屏幕高度(像素),范围:240 - 9999。设置后会忽略 browser_preset。**注意:**需将 enable_javascript 或 enable_browser_rendering 设为 true |
browser_screen_scale_factor | float | 否 | 自定义屏幕缩放比,范围:0.5 - 3。设置后会忽略 browser_preset。**注意:**需将 enable_javascript 或 enable_browser_rendering 设为 true |
store_raw_html | boolean | 否 | 是否保存抓取页面的原始 HTML。设为 true 后,可通过 /v3/on_page/raw_html/ 获取该页面 HTML。默认:false |
disable_cookie_popup | boolean | 否 | 是否禁用 Cookie 同意弹窗。默认:false |
accept_language | string | 否 | 访问网站时使用的 Accept-Language 请求头。支持 xx、xx-XX、xxx-XX 等格式。**注意:**如果不传,部分网站可能拒绝访问,响应中页面可能以 "type":"broken" 返回 |
enable_javascript | boolean | 否 | 是否执行页面中的 JavaScript。默认:false。**注意:**启用后会产生额外费用 |
enable_browser_rendering | boolean | 否 | 是否启用浏览器渲染模拟,用于获取 Core Web Vitals 指标(FID、CLS、LCP)。默认:false。启用后会加载样式、图片、字体、动画、视频等资源。同时将 enable_javascript 和 load_resources 设为 true。**注意:**启用后会产生额外费用 |
enable_xhr | boolean | 否 | 是否页面发起 XMLHttpRequest。默认:false。若使用该字段,enable_javascript须设为 true |
switch_pool | boolean | 否 | 是否切换代理池。设为 true 时会使用额外代理池,有助于在高并发批量请求时减少 rate-limit 或 site_unreachable 错误 |
ip_pool_for_scan | string | 否 | 指定抓取使用的代理池地区。可选:us、de。当页面在某些地区不可访问时,可用于降低 site_unreachable 错误 |
markdown_view | boolean | 否 | 是否在响应中返回 Markdown 格式页面。设为 true 后,结果会出现在 page_as_markdown 字段中。默认:false |
browser_preset 预设值说明
| 预设值 | browser_screen_width | browser_screen_height | browser_screen_scale_factor |
|---|---|---|---|
desktop | 1920 | 1080 | 1 |
mobile | 390 | 844 | 3 |
tablet | 1024 | 1366 | 2 |
响应结构
接口返回 JSON 数据,顶层 tasks 数组。
顶层字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本 |
status_code | integer | 通用状态码,完整列表见 /v3/appendix/errors |
status_message | string | 通用状态信息,完整列表见 /v3/appendix/errors |
time | string | 执行耗时,单位秒 |
cost | float | 本次请求总费用,单位 USD |
tasks_count | integer | tasks 数组中的任务数 |
tasks_error | integer | 返回错误的任务数 |
tasks | array | 任务结果数组 |
tasks[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式 |
status_code | integer | 任务状态码,范围通常为 10000-60000,完整列表见 /v3/appendix/errors |
status_message | string | 任务状态信息 |
time | string | 任务耗时 |
cost | float | 该任务费用,单位 USD |
result_count | integer | result 数组中的结果数 |
path | array | 请求路径 |
data | object | 与请求中提交的参数一致 |
result | array | 结果数组 |
result[] 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
crawl_progress | string | 抓取进度,可选:in_progress、finished |
crawl_status | object | 抓取会话 |
items_count | integer | items 数组中的数 |
items | array | 页面解析结果项 |
页面解析结果字段
items[] 中的对象类型为 content_parsing_element。
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 返回项类型,固定为 content_parsing_element |
fetch_time | string | 抓取时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00 |
status_code | integer | 页面 HTTP 状态码 |
page_content | object | 页面解析 |
page_as_markdown | string | 页面 Markdown 文本;当请求中 markdown_view=true 时返回 |
page_content 字段
| 字段名 | 类型 | 说明 |
|---|---|---|
header | object | 页头解析 |
footer | object | 页脚解析 |
main_topic | array | 页面主主题块 |
secondary_topic | array | 页面次主题块 |
ratings | array | 页面上商品/的评分信息 |
offers | array | 页面上的商品报价信息 |
comments | array | 页面中的评论信息 |
contacts | object | 页面中的联系方式 |
##块结构
以下结构会在 header、footer、main_topic、secondary_topic 等字段中重复出现。
通用区块
| 字段名 | 类型 | 说明 |
|---|---|---|
primary_content | array | 页面主 |
secondary_content | array | 页面次 |
table_content | array | 页面中的表格 |
primary_content[] / secondary_content[]
| 字段名 | 类型 | 说明 |
|---|---|---|
text | string | 文本 |
url | string | 若该文本为链接锚文本,则返回对应页面 URL |
urls | array | 当前中识别出的链接及锚文本 |
urls[]
| 字段名 | 类型 | 说明 |
|---|---|---|
url | string | 识别出的链接 URL |
anchor_text | string | 该链接的锚文本 |
表格结构
table_content[] 用于表示页面中的表格。
| 字段名 | 类型 | 说明 |
|---|---|---|
header | array | 表头 |
body | array | 表格主体 |
footer | array | 表尾 |
行单格结构
header、body、footer 中各行均 row_cells:
| 字段名 | 类型 | 说明 |
|---|---|---|
row_cells | array | 当前行的单格数组 |
row_cells[]
| 字段名 | 类型 | 说明 |
|---|---|---|
text | string | 单格文本 |
urls | array | 单格中识别出的链接及锚文本 |
is_header | boolean | 是否属于表头单格 |
主题块结构
main_topic[] 和 secondary_topic[] 中的对象通常以下字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
h_title | string | Meta Title |
main_title | string | 当前块主标题 |
author | string | |
language | string | 语言 |
level | string | HTML 层级 |
primary_content | array | 该主题块主 |
secondary_content | array | 该主题块次 |
table_content | array | 该主题块中的表格 |
评分信息结构
ratings[] 返回页面中展示的评分信息。
| 字段名 | 类型 | 说明 |
|---|---|---|
name | string | 评分名称。**注意:**该对象中此字段固定为 null |
rating_value | integer | 当前评分值 |
max_rating_value | integer | 最大评分值 |
rating_count | integer | 评价数量 |
relative_rating | float | 相对评分,范围 0 到 1 |
商品报价结构
offers[] 返回页面中识别出的商品信息。
| 字段名 | 类型 | 说明 |
|---|---|---|
name | string | 商品名称 |
price | integer | 商品价格 |
price_currency | string | 价格币种 |
price_valid_until | integer | 价格有效期截止时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00 |
评论结构
comments[] 返回页面中的评论。
| 字段名 | 类型 | 说明 |
|---|---|---|
rating | object | 评论对应评分 |
title | string | 评论标题 |
publish_date | string | 评论发布时间 |
author | string | 评论 |
primary_content | array | 评论正文主 |
comments[].rating
| 字段名 | 类型 | 说明 |
|---|---|---|
name | string | 评分名称。**注意:**该字段固定为 null |
rating_value | integer | 评分值 |
max_rating_value | integer | 最大评分值 |
rating_count | integer | 反馈数量。**注意:**该字段在此对象中固定为 null |
relative rating | float | 相对评分,范围 0 到 1 |
联系方式结构
contacts含页面中的联系信息。
| 字段名 | 类型 | 说明 |
|---|---|---|
telephones | array | 电话号码列表 |
emails | array | 邮箱列表 |
请求示例
cURL
bash
curl --location --request POST "https://api.seermartech.cn/v3/on_page/content_parsing/live" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"url": "https://example.com/article",
"markdown_view": true
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/on_page/content_parsing/live"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
}
data = [
{
"url": "https://example.com/article",
"markdown_view": True
}
]
response = requests.post(url, headers=headers, json=data)
print(response.json)TypeScript
typescript
import axios from "axios";
const postData = [
{
url: "https://example.com/article",
markdown_view: true
}
];
axios({
method: "post",
url: "https://api.seermartech.cn/v3/on_page/content_parsing/live",
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json"
},
data: postData
})
.then((response) => {
// 输出解析结果
console.log(response.data);
})
.catch((error) => {
console.error(error);
});响应示例
以下为精简后的响应结构示例:
json
{
"version": "0.1.20250526",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.2489 sec.",
"cost": 0.000125,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.2311 sec.",
"cost": 0.000125,
"result_count": 1,
"path": [
"v3",
"on_page",
"content_parsing",
"live"
],
"data": {
"api": "on_page",
"function": "content_parsing",
"url": "https://example.com/article",
"markdown_view": true
},
"result": [
{
"crawl_progress": "finished",
"crawl_status": {},
"items_count": 1,
"items": [
{
"type": "content_parsing_element",
"fetch_time": "2022-11-01 10:02:52 +00:00",
"status_code": 200,
"page_content": {
"header": {
"primary_content": [],
"secondary_content": [],
"table_content": null
},
"footer": {
"primary_content": null,
"secondary_content": [],
"table_content": null
},
"main_topic": [
{
"h_title": "示例页面标题",
"main_title": "示例文章主标题",
"author": "名",
"language": "en",
"level": 1,
"primary_content": [
{
"text": "正文示例",
"url": null,
"urls": null
}
],
"secondary_content": null,
"table_content": null
}
],
"secondary_topic": [],
"ratings": null,
"offers": null,
"comments": null,
"contacts": {
"telephones": [],
"emails": []
}
},
"page_as_markdown": "# 示例文章主标题\n\n正文示例"
}
]
}
]
}
]
}错误处理
- 顶层
status_code表示接口整体执行状态 tasks[].status_code表示单个任务执行状态- 建议同时处理接口级与任务级错误
- 完整错误码与状态信息请参考:
/v3/appendix/errors
常见异常场景
| 场景 | 说明 |
|---|---|
rate-limit | 同时提交大量任务时可能触发频率限制 |
site_unreachable | 目标站点不可访问,可能与地区、代理池或网站防护 |
页面返回 "type":"broken" | 某些站点在未设置 accept_language 时会拒绝访问 |
使用建议
- 需要拿到渲染后时,优开启
enable_javascript - 需要模拟真实设备视口时,使用
browser_preset或自定义browser_screen_* - 页面依赖异步请求时,可启用
enable_xhr - 需要下游做文本处理或知识抽取时,建议同时开启
markdown_view - 访问受地区限制的页面时,尝试切换
ip_pool_for_scan
实用场景
- 提取正文结构:解析文章页、博客页、落地页的主与次,便于做 SEO审计、正文抽取和知识库。
- 识别站链接布局:抓取页面中的链接、锚文本与块 URL,用于分析链结构、导航分布和锚文本优化机会。
- 抽取表格信息:获取页面中的表格表头、单格和链接,便于监控产品参数页、价格页或数据报告页中的结构化信息。
- 采集商品与评价信息:识别报价、评分、评论和联系方式,可用于电商 SEO、品牌监测和竞品页面信息汇总。
- 生成 Markdown源:直接返回
page_as_markdown,方便接 RAG、归档、AI 摘要、页面比对等文本处理流程。