接口参考
All-in-One Extract
POST /v1/extract 的完整请求与响应参考。
POST /v1/extract
当你希望一次请求完成页面抓取并直接拿到结构化结果时,使用这个接口。
鉴权说明
- 外部调用时,请求需要同时带
X-API-Key和X-Project-Id - 在当前站点的 API 密钥设置 创建或复制 API key 与 project id
- COM 项目使用
https://api.lexmount.com,CN 项目使用https://api.lexmount.cn;凭据必须与 API 区域匹配
请求体
{
"extract": {
"url": "https://example.com"
}
}字段说明
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
extract | object | 是 | 提取请求主体 |
extract.url | string | 否 | 要抓取的页面 URL |
extract.dom_id | string | 否 | 已有 DOM 快照 ID |
trace.include_steps | bool | 否 | 传 true 时返回流程步骤 |
trace.include_raw_dom | bool | 否 | 传 true 时返回原始 DOM |
约束:
extract.url和extract.dom_id至少传一个- 需要排查链路时再显式传
trace.include_steps=true
提取选项
| 字段 | 类型 | 说明 |
|---|---|---|
extract.options.engine_preference | string | 默认 auto;可选引擎见 Dump DOM |
extract.options.user_agent | string | 可选的抓取 User-Agent |
{
"extract": {
"url": "https://example.com",
"options": {
"engine_preference": "chrome_cdp",
"user_agent": "MyFetcher/1.0"
}
},
"trace": { "include_steps": true }
}extract.dom_id 存在时复用快照,不重新抓取 URL。建议只传返回的 dom_id,避免混入不相关 URL;更换引擎不能重新渲染已有快照,需要重新按 URL 抓取。
当前 /v1/extract 使用服务端控制的 30 秒提取时限;extract.options.timeout_ms 不会覆盖它,旧 workflow 字段也不会调整时限。公共网关另有超时限制。filter_scripts_styles 的清理行为属于 Dump DOM,不是本接口的输出开关。template_id 已不支持,模板自动匹配;不要依赖内部模板调试或强制生成字段。未知 JSON 字段会被拒绝。
最简示例
API_KEY='<your-api-key>'
PROJECT_ID='<your-project-id>'
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{"extract":{"url":"https://example.com"}}'响应结构
顶层响应通常包含:
| 字段 | 说明 |
|---|---|
request_id | 请求关联 ID;同一个值也会出现在响应头 X-Request-ID |
result | 成功时的结构化提取结果 |
metadata | 附加元信息,例如 dom_id、server_elapsed_ms |
error | 失败时返回的错误对象 |
trace | 调试链路步骤;仅在 include_steps=true 时返回 |
raw_dom | 原始 DOM 内容;仅在 include_raw_dom=true 时返回 |
当你需要反馈问题、或者把客户端响应和服务端请求日志关联起来时,请保留 request_id。
result 中最常用的字段包括:
urlfinal_urlstatus_codetitledescriptionmain_textpublish_timeauthorlanguagelinksimagesenginedom_id
复用已有 dom_id
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"extract": {
"dom_id": "123"
}
}'开启 Trace
POST /v1/extract 默认不返回 trace。
如果你需要查看抽取链路步骤,可以显式打开:
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"extract": {
"url": "https://example.com"
},
"trace": {
"include_steps": true
}
}'返回 Raw DOM
raw_dom 默认不会返回。
只有在你确实需要把抓取到的 DOM 一并放进响应里时,才建议开启:
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"extract": {
"url": "https://example.com"
},
"trace": {
"include_raw_dom": true
}
}'raw_dom可能非常大,不适合常规线上调用
调试模式
如果既要看流程步骤,也要看原始 DOM,再同时打开两个字段:
curl -sS -X POST https://api.lexmount.cn/v1/extract \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"extract": {
"url": "https://example.com"
},
"trace": {
"include_steps": true,
"include_raw_dom": true
}
}'trace会显著增大响应体raw_dom可能非常大,不适合常规线上调用
常见失败与排查方式,见 Common Errors。
字段类型与可选输出
result.status_code是目标页面状态,不是本次 API 的 HTTP 状态。result.fetched_at是时间字符串;publish_time若有值也是时间字符串。links的元素是{ "text": "Example", "href": "https://example.com/" };images的元素是{ "src": "https://example.com/image.png", "alt": "Example" }。description、main_text、author、publish_time、language、links、images、debug和extra均可能省略。遍历数组前先处理字段缺失的情况。extra可能包含 Open Graph、JSON-LD、DOM 概要等页面信息,内容随页面和提取方式变化。metadata可能包含dom_id、不透明的template_id和server_elapsed_ms。不要把其中的模板标识当成可传回的选项。- 即使请求了
raw_dom,没有可用快照内容时仍可能省略它。trace中的具体步骤也可能随处理路径变化。
快照的复用范围和失效处理见 Dump DOM。
