入口頁為了排版、样式隔离,或者图方便批量替換,有时會把目标 URL 塞進 iframe 里。這样一来,頁面上肉眼能看到的連結,在 HTML 源碼里只是一個 iframe 标簽。搜尋蜘蛛到底會不會顺着 iframe 進去,就成了一個常见疑問。
搜尋蜘蛛是怎么看待 iframe 的
主流搜尋引擎對 iframe 的處理,大致可以概括成几点:
- iframe 的 src 本身是一個 URL,會被当作頁面上的一個资源去請求,這一点和图片、脚本類似。
- iframe 内部加载的文档,通常被当成一個獨立頁面處理,里面的 a 标簽属于那個文档,而不是外层入口頁。
- 外层頁面與 iframe 内部文档之間的連結传递,比正文里的普通 a 标簽弱得多,跨域 iframe、多层嵌套 iframe 尤其明顯。
- src 由 JavaScript 動態寫入,或者需要滚動、点击才加载的 iframe,被發現和抓取的概率會進一步下降。
所以,iframe 里的目标 URL 並不是绝對發現不了,但它是一條明顯更脆弱的通路,不适合当作主要手段。
哪些寫法會让 iframe 里的連結基本白搭
- src 靠脚本拼接,或者等 DOM 加载完再赋值,抓取时 iframe 還是空的。
- iframe 里再套 iframe,或者 iframe 指向一個需要 JS 渲染才能出連結的頁面。
- iframe 加载的文档本身带抓取限制,或者返回 404、软 404、频繁跳轉。
- iframe 里的連結加了 nofollow,或者外层入口頁整体狀態就不正常。
- 一個 iframe 里塞几十上百條連結,又開着懒加载,實际請求到的可能只有前几條。
如果一定要用 iframe,可以做稳一点
- src 寫成静態的、可以直接訪問的 URL,不要依赖脚本生成。
- 每個 iframe 里控制連結數量,几條到十几條即可,別堆成連結墙。
- 同时在外层入口頁正文里保留一份普通 a 标簽,让發現路径不只依赖 iframe。
- 不要設定到让 iframe 無法正常加载,也不要让它尺寸為 0,導致浏览器压根不發起請求。
- 定期看服務器日誌里有没有针對 iframe src 的抓取請求,有請求也不代表里面的連結都被跟了。
更省心的替代方案
如果目的只是让搜尋蜘蛛發現目标 URL,普通 a 标簽仍然是最直接的方式:連結寫在 HTML 源碼里、href 指向真實可訪問的地址、數量适中、入口頁之間有些内容差异。再配合 sitemap 和可用的提交接口,就形成多條互相不依赖的發現路径,比單獨押注 iframe 可靠得多。
發現只是第一步。目标 URL 被請求到之後,還要看它自身的狀態碼、内容质量和更新情况,才谈得上後續的收錄表現,這一点不要寄望于入口頁的寫法能解决。
怎么驗證 iframe 這條路有没有生效
比較實用的做法是做個小對照:同一批目标 URL,一组只放在 iframe 里,一组放在正文 a 标簽里,观察一段時間内两類 URL 在抓取日誌中的請求數量差异。如果 iframe 那一组的請求量長期接近于零,說明這條通路在你現在的场景下基本没被采用,早点換回普通連結更划算。