做蜘蛛池或站群入口页时,为了排版整洁、避免访客直接点走,有人会把目标链接放进 iframe,或者写进 noscript 里。这两种写法对人来说“看得见但不显眼”,对搜索蜘蛛来说却属于边界情况:有时能被发现,有时完全读不到,而且不同搜索引擎的处理并不一致。
iframe 里的链接:src 好发现,内部链接难说
iframe 本质上是在入口页里嵌入另一个文档。搜索蜘蛛解析入口页 HTML 时,会看到 iframe 的 src 地址,通常会把它当作一个需要抓取的资源,也就是说,iframe 的 src 本身一般能被发现。
真正不确定的是 iframe 内部那层文档里的链接:
- iframe 的 src 地址:一般会被请求,发现概率较高。
- iframe 内部文档里继续嵌套的链接:需要搜索引擎愿意为这个 iframe 启动渲染,发现概率明显下降。
- 跨域 iframe、多层嵌套 iframe:大概率只抓第一层,里面不再跟进。
- src 由 JavaScript 动态写入:要先完成渲染才拿得到地址,比静态写法更晚被发现,也可能压根不渲染。
- 懒加载 iframe、进入视口才加载:部分抓取器会直接跳过。
noscript 里的链接:更像是“备胎”
noscript 的语义是“浏览器不支持或关闭 JavaScript 时显示的内容”。主流搜索引擎抓取时通常执行 JavaScript,渲染后的页面里 noscript 内容未必生效;但原始 HTML 里写的链接是否会被解析,各引擎做法并不统一,也没有对外承诺。
结论很简单:可以把 noscript 当作补充,但不要把它当作目标 URL 的唯一入口。如果整页链接只放在 noscript 里,那发现与否基本靠运气。
为什么这两类链接容易被漏掉
- 需要渲染才能拿到,在抓取队列里排在主文档静态链接之后。
- iframe 是独立文档,继承不到入口页的正文上下文,蜘蛛判断链接价值时缺少依据。
- 爬虫预算有限时会优先抓主文档里、层级更浅的链接。
- 搜索质量团队对隐藏内容、异常嵌套结构有专门的识别逻辑,这类写法天然处于不利位置。
更稳的放法
- 目标链接优先写在入口页正文的普通 a 标签里,href 直接输出在静态 HTML 源码中,不依赖 JS。
- 如果确实要用 iframe,至少把目标 URL 同时放在 iframe 的 src 和 iframe 之外的普通链接里,两条路径互为备份。
- 需要 noscript 就保留,但同一批 URL 必须在常规可见区域再出现一次。
- 控制单页的 iframe 数量与嵌套层级,几十个 iframe 混在一个入口页里,抓取体验会很差。
- 把 sitemap、站内链接、URL 提交渠道作为补充发现通道,不要把希望压在一个入口页上。
怎么验证蜘蛛有没有真的读到
判断依据应该是日志和实际抓取记录,而不是猜测:
- 在服务器日志里搜目标 URL,看是否有来自搜索蜘蛛的请求,注意请求时间是否紧跟入口页被抓取之后。
- 对比入口页与目标页的抓取时间差;时间差过大,或目标页从未出现,说明这条链接没被跟进。
- 用搜索引擎官方工具查看渲染后的 HTML,确认链接在渲染结果里确实存在。
- 把 iframe 页面单独拿出来,用抓取工具的“获取并渲染”功能对比静态源码与渲染结果。
隐藏或嵌套的链接并不是“一定读不到”,而是“不能稳定地读到”。蜘蛛池要的是可预测,而不是靠某一次运气刚好被发现。
小结
iframe 的 src 通常能被发现,iframe 内部链接、noscript 里的链接则不确定。想让搜索蜘蛛稳定发现目标 URL,最省事的做法仍然是:把链接放在静态 HTML 正文里,其余形式只当补充。另外要记住,发现不等于收录,发现之后能否被抓取、被索引,还取决于目标页本身的状态和质量。