把目标連結放進 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 連結寫法更省心。