蜘蛛發現新 URL,主要靠两條路:Sitemap 主動提交,以及顺着頁面上已有的連結走出来。Sitemap 解决的是“蜘蛛知道有這些地址”,而連結解决的是“蜘蛛從哪條路真的走過去”。很多站点把注意力全放在 Sitemap 上,却忽略了連結放在頁面什么位置,會直接影响它被走到的机會。
蜘蛛眼里的連結,是带上下文的
蜘蛛解析 HTML 时拿到的是一串 a 标簽。它不會像人一样判断“這是導航還是广告位”,但頁面结构本身提供了信号:連結出現在 DOM 的什么位置、周围有多少同類連結、锚文本寫了什么、是不是在首屏返回的 HTML 里。這些信号叠加起来,會影响蜘蛛的抓取倾向。
需要說明的是,抓取調度属于搜尋引擎侧的算法,外部只能观察到一些常见規律,既不能控制,也谈不上承诺。下面讲的是普遍現象,具体到每個站点會有差异。
導航連結:最稳定的入口
全站導航在每個頁面上都出現,位置固定,連結數量有限。對蜘蛛来说,這是最可靠的重复入口,也是它判断站点主要栏目结构的重要依據。因此導航里的連結,通常比埋在深處的連結更容易被定期走到。
寫導航时有几個常见問题:把導航做成 JavaScript 渲染後再插入 DOM,蜘蛛拿到的基础 HTML 里可能没有這些連結;用图片代替文字連結,锚文本就丢了;為了“覆盖更多頁面”,把几十個二級三級栏目全塞進顶部導航,结果是每個連結分到的關注都被稀释。
正文内鏈:决定深层頁面走不走得到
正文里的連結是蜘蛛進入詳情頁、标簽頁、歷史文章的主要通道。它的特点是上下文明确:锚文本说的是什么,連結指向的頁面大致就是什么主题,蜘蛛因此更容易判断這個 URL 该不该抓、该归到什么主题下。
如果一處栏目頁只靠導航進入,而栏目下的詳情頁又只被 Sitemap 提到、没有任何内鏈指過来,那這些詳情頁的抓取节奏基本完全依赖 Sitemap 的調度。补上几條来自相關正文的内鏈之後,情况通常會有變化——不是因為連結“传递了什么權重”,而是蜘蛛多了几條走過去的路径。
寫法上,锚文本尽量描述目标頁面的内容,避免清一色的“点击這里”“查看更多”。同一篇文章里指向同一地址的連結,留一個就够。
頁脚與侧栏:方便,但容易失控
頁脚連結在每個頁面重复出現,等于给目标 URL 提供了大量入口,短時間内确實容易被抓到。問题在于這個位置没有主题篩選:
- 頁脚里堆几十個連結,蜘蛛每次訪問都要解析一遍,實际有用的可能只有几個;
- 侧栏的“热门文章”“最新评论”會随資料變化,容易形成指向同一批 URL 的重复入口;
- 如果頁脚連結里混進了需要登入、參數拼接、临时活動的地址,蜘蛛走過去只會拿到無用结果或跳轉鏈。
比較稳妥的做法是:頁脚只留全站通用且長期有效的頁面,比如關于、联系、條款、主要栏目入口;動態列表類模块尽量控制數量,並确保里面的 URL 是規范化的。
連結數量不是越多越好
頁面上的連結越多,平均每個連結获得的抓取机會越少。一個頁面上千個連結时,蜘蛛通常會挑一部分走,剩下的要等下次。與其在一個頁面里铺開所有 URL,不如让重要頁面從多個相關頁面各拿一條内鏈,结构更清晰,抓取路径也更短。
怎么驗證内鏈是否真的被走到
- 從服務器日誌里筛出蜘蛛的訪問记錄,看目标 URL 的第一次抓取出現在哪一批請求之後,據此推断来源頁面;
- 检查返回给蜘蛛的 HTML 里,導航和正文連結是否本来就存在,而不是渲染後才出現;
- 用站点爬虫工具跑一遍,輸入首頁,看重要頁面在第几层被走到、有没有頁面完全走不到;
- 對只靠 Sitemap 進入的頁面,补一條相關正文内鏈,過一段時間观察抓取频率是否變化。
内鏈结构的作用是给蜘蛛多几條明确的路。位置越稳定、上下文越清楚、數量越克制,URL 被發現和被复查的机會通常越稳定。Sitemap 该交還是要交,但它替代不了頁面之間真實的連結關系。