TL;DR
- JavaScript-heavy 页面很难,因为初始 HTML 可能不包含在水合或 API 调用后可见的内容。
- 首先检查服务器渲染的 HTML、嵌入的 JSON 或允许的馈送;仅在这些路径不足时使用浏览器。
- 渲染结果仍需要语义验证,因为浏览器可以加载同意墙、错误外壳或空状态。
- Nstdata Crawl 在渲染、受限导航和可重用页面工件是收集问题的一部分时很有用。
为什么 JavaScript 页面对爬虫来说看起来是空的
Nstdata Crawl 是在浏览器渲染重复时测试的管理选项。
具有 JavaScript 的页面通常发送一个小的 HTML 外壳,然后获取数据并在浏览器中构建可见的 DOM。HTTP 客户端只能看到外壳;浏览器可以看到水合后的页面。框架水合、延迟加载和客户端分页都可以改变“页面”的含义。当渲染必须是可重复的收集阶段时,请从 Nstdata Crawl 开始。
MDN Fetch 文档 解释了客户端请求模型,而 Playwright 的页面 API 记录了浏览器导航。两者都不允许重新播放私有 API 调用。
选择渲染路径
| 页面行为 | 首选项 | 验证 |
|---|---|---|
| 服务器渲染的 HTML | HTTP 提取和解析器 | 所需的文本和规范 URL |
| 嵌入的 JSON 或 JSON-LD | 提取结构化状态 | 架构和时间戳检查 |
| 客户端渲染的内容 | 浏览器渲染 | 等待语义内容 |
| 无限滚动 | 浏览器加上限制滚动 | 项目计数和重复检查 |
最小浏览器渲染示例
这个 Playwright 示例是一个授权公共页面的说明。它使用内容条件而不是固定的睡眠,并且不试图绕过访问控制。





