把目标链接放进 iframe,是不少入口页的省事做法:主页面内容简单,链接统一塞到一个内嵌页面里,以后改动只动一个文件。但这一步会直接影响搜索蜘蛛能不能顺着链接往下走。
iframe 里的链接,搜索蜘蛛通常能看到什么
主流搜索引擎对 iframe 的处理原则是:会抓取 iframe 的 src 地址,把返回的内容当作独立文档处理。也就是说,iframe 里的 a 标签本身在 HTML 源码里是真实存在的,只要 src 指向的页面能被正常抓取,里面的链接就有被解析的机会。
但“能解析”和“能顺着走”是两件事。实际操作中常见的分岔是:
- iframe 的 src 返回 200,内容里是标准 a 标签,蜘蛛通常可以跟着抓;
- iframe 的 src 被 robots.txt 拦住,或者返回 404、403,里面的链接基本不会被处理;
- iframe 内容靠 JavaScript 渲染,HTML 源码里没有链接,发现难度明显上升;
- iframe 加了 sandbox,或者用了懒加载且抓取时未进入视口,可能拿不到内容。
哪些写法容易踩坑
嵌套 iframe
iframe 里再套 iframe,层级越深,抓取链路越长,被完整解析的概率越低。入口页本身价值有限时,更不值得把链接藏到第三层。
src 用相对路径且页面有跳转
如果 iframe 的 src 是相对路径,而入口页又经过 301 或 302,最终解析出的地址可能和预期不一致,出现 404。直接用完整的绝对 URL 更稳妥。
依赖 JS 写入 iframe
用 document.write 或前端框架动态插入 iframe,HTML 源码里没有 src 也没有链接,抓取时就相当于空的。这类写法对 URL 发现几乎没有帮助。
更稳的做法
- 把关键链接放在主文档里,直接写成 HTML 的 a 标签,iframe 只当补充展示。
- 如果必须用 iframe,给 src 一个真实可访问的绝对 URL,并确认它没有被 robots.txt 挡住。
- 内嵌页面里保持链接是普通 a 标签,不要用 onclick 跳转或 button 包裹。
- 控制 iframe 数量,一页放一两个足够,多了反而拖慢加载。
iframe 方案不是不能用,但别当主力
如果入口页本身内容单薄,主要靠 iframe 承载链接,那发现链路就完全依赖那个内嵌页面的抓取状态。一旦内嵌页出问题——被屏蔽、超时、改版——目标 URL 的发现就会同步中断,而且排查时不容易第一时间想到是 iframe 造成的。
把链接放在最容易读到的地方,比放在“看起来整洁”的地方更重要。
总结一句:iframe 里的链接并非一定抓不到,但它多了一层依赖,风险比直接写在主文档里的链接高。入口页这种以“被发现”为主要目的的页面,优先用最朴素的 HTML 链接写法更省心。