抓取网站

给 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 被链接到。