做入口頁时,很多人會想換個花样:把目标 URL 塞進 iframe、图片地址、CSS 背景图,甚至用脚本動態拼出来。這样能不能被搜尋蜘蛛發現?答案取决于你把 URL 放在什么位置——有的只是被当成资源請求一次,有的才可能進入真正的頁面發現流程。
先分清两件事:资源請求和頁面發現
搜尋蜘蛛在抓取一個頁面时,會做两件不同的事。一是請求頁面需要的外部资源,比如图片、样式表、脚本;二是從頁面里提取可以繼續抓取的 URL 清單,再排队去抓。资源請求只為了把頁面完整渲染出来,並不等于搜尋引擎會去解析那個资源内部的内容。所以判断某種寫法行不行,關键是看它触發的是前者還是後者。
iframe:有机會被繼續抓,但归属容易乱
iframe 的 src 指向的頁面本身是一個獨立 URL,搜尋蜘蛛通常會把 iframe 内部的文档当作單獨頁面来抓取。如果目标連結是寫在那個 iframe 頁面里的标准 a 标簽,那么這條路径是有机會被繼續發現的。
但要注意几個前提:iframe 里的頁面不能被 robots.txt 屏蔽,不能返回 noindex,也不能要求登入或校驗 Cookie,否則抓取鏈路在第一步就断了。另外 iframe 内容在權重和来源归属上和父頁面並不共享,用它当主力入口,稳定性和可控性都不如直接把連結寫在主文档里。
img 的 src 和 srcset:多半只抓一次图片
img 上的地址一般會被当作图片资源請求,用于图片索引。如果這個地址指向的其實是一個 HTML 頁面,多數搜尋蜘蛛只會把它当成资源取一次,不會像抓普通網頁那样再解析頁面里的連結。也就是说,把目标 URL 塞進 img src,很可能只換来一次资源請求,不會形成鏈式發現。
srcset 里列出的多個地址同理,属于同一張图的不同尺寸,不會變成多個可抓頁面。
CSS 背景图和 @import:基本不属于發現路径
用 CSS 的 background-image 放一個地址,通常只在渲染阶段被請求,搜尋引擎不會把它当作可索引頁面處理,也不會顺着它去解析連結。@import 引入的样式表也属于资源,不是頁面發現入口。
脚本動態插入的連結:有條件
主流搜尋引擎會执行一定程度的 JavaScript,動態生成的 a 标簽是有机會被發現的。但能不能稳定發現,取决于脚本复杂度、渲染预算以及是否需要用戶交互。如果連結必须点击按钮之後才出現,被抓到的概率會明顯下降。入口頁如果全靠脚本輸出連結,建议在 HTML 里保留一份静態版本兜底。
更稳妥的做法
- 目标 URL 用标准的 a 标簽寫進 HTML,href 是明文地址,可点击可複製。
- 不要用 onclick 加 location.href 之類的寫法代替 a 标簽。
- 單頁連結數量控制在合理范围,避免一頁堆上千條。
- iframe、图片、脚本只能作為补充手段,不适合当唯一入口。
- 配合 sitemap 和站内已有的正常連結,让 URL 的發現路径更稳。
提示:無论連結用什么方式呈現,入口頁能被稳定抓取、目标 URL 返回正常狀態碼,才是後面讨论收錄的前提。發現不了,就谈不上抓取。
怎么快速自查
- 查看服務器日誌,確認搜尋蜘蛛有没有請求過入口頁本身。
- 看目标 URL 有没有出現在的抓取记錄里,而不是只看到图片或样式被請求。
- 用抓取工具或浏览器無痕模式關閉脚本,检查連結是否還在 HTML 源碼里。
- 如果關閉脚本後連結全部消失,說明入口頁對脚本依赖過重,需要改造。
说到底,連結的可發現性来自清晰、稳定的 HTML 结构。把目标 URL 老老實實寫成 a 标簽,比绕道 iframe、图片或样式表要可靠得多,後續排查問题也简單得多。