Dump DOM
获取 HTML、检查渲染结果,并复用 DOM 快照。
POST /v1/dom/dump
当你需要直接拿到抓取后的 HTML、检查页面渲染结果、或者希望在后续提取请求中复用 DOM 快照时,使用这个接口。
鉴权说明
- 外部调用时,请求需要同时带
X-API-Key和X-Project-Id - 在当前站点的 API 密钥设置 创建或复制 API key 与 project id
- COM 项目使用
https://api.lexmount.com,CN 项目使用https://api.lexmount.cn;凭据必须与 API 区域匹配
请求体
{
"url": "https://example.com",
"options": {
"engine_preference": "lightmount_dcl",
"timeout_ms": 30000,
"filter_scripts_styles": false
}
}字段说明
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
url | string | 是 | 要抓取的页面 URL |
options.engine_preference | string | 否 | 指定引擎,默认 auto |
options.timeout_ms | int | 否 | 正整数毫秒值;控制抓取处理时限,不能延长公共网关时限 |
options.user_agent | string | 否 | 自定义抓取 User-Agent |
options.filter_scripts_styles | bool | 否 | 是否在返回和持久化快照前移除 script 和 style |
支持的 engine_preference:
autohttpchromechrome_cdplightmount_litelightmount_dcllightmount_domstable
引擎行为
auto 先使用服务端匹配到的站点引擎规则;没有匹配规则时当前使用 lightmount_dcl。它不保证先 HTTP、再依次尝试所有浏览器。需要稳定选择时显式指定引擎,并读取响应的 engine。
| 引擎 | 用途 |
|---|---|
http | 直接获取 HTML,不执行页面 JavaScript |
chrome / chrome_cdp | Chrome 抓取路径 |
lightmount_lite | 轻量抓取路径 |
lightmount_dcl | LightMount,等待 DOMContentLoaded |
lightmount_domstable | LightMount,等待 DOM 稳定 |
不同引擎的页面兼容性不同;DOMContentLoaded 或 DOM 稳定不保证所有异步正文已经加载。该接口每次按 url 抓取;需要复用快照时将 ID 交给提取接口。
基础示例
API_KEY='<your-api-key>'
PROJECT_ID='<your-project-id>'
curl -sS -X POST https://api.lexmount.cn/v1/dom/dump \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"url": "https://example.com",
"options": {
"engine_preference": "lightmount_dcl",
"timeout_ms": 30000
}
}' \
| jq '{final_url, engine, dom_id, html_len:(.html|length)}'响应字段
常用返回字段:
request_idurlfinal_urlstatus_codefetched_atenginedom_idhtmldebug
request_id 是请求关联 ID。同一个值也会出现在响应头 X-Request-ID 里。
过滤 script / style
curl -sS -X POST https://api.lexmount.cn/v1/dom/dump \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{
"url": "https://example.com",
"options": {
"engine_preference": "lightmount_dcl",
"filter_scripts_styles": true
}
}' \
| jq '{dom_id, has_script:(.html|test("<script"; "i")), has_style:(.html|test("<style"; "i"))}'这个模式适合拿到更干净的 DOM 用于检查和模板调试,但不要把它当成浏览器原始快照的完全等价物。
复用 dom_id
先抓取快照,再把 dom_id 交给 /v1/extract:
set -euo pipefail
DOM_ID="$(curl --fail-with-body -sS -X POST https://api.lexmount.cn/v1/dom/dump \
-H 'Content-Type: application/json' \
-H "X-API-Key: $API_KEY" \
-H "X-Project-Id: $PROJECT_ID" \
-d '{"url":"https://example.com","options":{"engine_preference":"lightmount_dcl"}}' \
| jq -er '.dom_id | select(type == "string" and length > 0)')"
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\":\"$DOM_ID\"}}" \
| jq '{title:.result.title, engine:.result.engine, dom_id:.metadata.dom_id}'如果要排查失败原因,见 Common Errors。
快照复用与响应检查
dom_id 是返回的字符串标识(例如 "123"),请原样保存。示例值不是可复用的真实快照。继续使用捕获快照时的区域入口;快照不是跨区域浏览器 Context,也没有公开保证的固定保留时长。遇到 dom_snapshot_not_found 时重新抓取 URL,长期保存应由应用存储需要的内容。
Dump DOM 的 HTTP 200 表示抓取流程完成;目标页仍可能返回 403、404 等,请同时检查顶层 status_code、final_url 和 html。html 为空、debug 不存在等情况都应兼容。普通 dump 返回 HTML;设置过滤后,保存的快照也是清理后的内容。
生产代码应先检查 HTTP 状态和 dom_id,再发起复用请求;不要在第一次调用失败后把 null 作为 ID 传入。两次成功调用分别计入 Web Fetch 用量。
