抓取网站
给 Minaya 一个起始 URL,它会跟随该页面上的链接进行抓取,并始终停留 在同一来源域内。
默认设置
| 设置项 | 默认值 | 含义 |
|---|---|---|
| 深度 | 2 | 起始页面、该页面链接到的页面,以及那些页面继续链接到的页面。 |
| 最大页面数 | 100 | 硬性上限,防止大型网站被无限抓取。 |
| 超时时间 | 10 秒 | 按每个页面计算。响应缓慢的页面会被跳过,而不是阻塞整个抓取过程。 |
深度为 1 时,只能到达从起始 URL 直接链接的页面。像 /portfolio 这样的枢纽页面,其子页面往往深一层才能到达, 这也是为什么默认深度为 2。
会被跳过的内容
- 其他来源域。 只会跟随同一来源域内的链接。
- 静态资源。 图片、CSS、JS、字体、压缩包、媒体文件,以及 JSON。
- 框架内部路径。 例如
/_next/、/cdn-cgi/和/api/等路径。 - 认证与交易类页面。 登录、注册、购物车、结账,以及搜索页面。
- 非 HTTP 协议。
mailto:、tel:、javascript:。
URL 片段标识符在加入队列前会被去除,因此 /about#team 与 /about 会被视为同一页面,只抓取一次。
会被提取的内容
Minaya 会保留每个页面的标题、各级标题、meta 描述和正文内容,并移除导航、页脚、脚本和样式。
有两个细节值得了解:
- 联系方式会在页脚被移除之前先被捕获,因此即使页脚 本身被丢弃,你的邮箱和电话号码仍会被保留下来。
- 经过 Cloudflare 混淆处理的邮箱会被解码。 使用 Cloudflare 的网站常常会用只有 JavaScript 才能解码的占位符来替换 邮箱地址;Minaya 能够还原出真实地址。
JavaScript 渲染的网站
抓取器读取的是服务端渲染的 HTML,不会执行 JavaScript。大多数框架—— Next.js、Nuxt、Astro——都会在服务端渲染内容,因此通常没有问题。而 完全依赖客户端渲染、只输出空壳的单页应用,抓取结果会很少甚至为空。
要检查这一点,可以查看某页面的源代码,搜索一句你在浏览器中能看到的 文字。如果它不在 HTML 中,请改为将该内容作为 文本来源粘贴进去。
验证抓取结果
抓取完成后,该来源会显示生成了多少个片段。对于一个大型网站,如果 结果只有一个页面,通常说明内容是客户端渲染的,或者你预期的页面 没有从起始 URL 被链接到。