搜尋抓取

内鏈的锚文本和位置:蜘蛛怎么判断一條連結值不值得跟

蜘蛛解析頁面时會抽出所有連結,並记錄锚文本、上下文和所在位置。锚文本相当于目标頁的一份简短语义說明,正文里的連結通常比全站頁脚連結更占優势。控制重复連結與無效連結的數量,把關键頁寫在 HTML 源碼的正文里,能让新頁面被發現的路径更顺。

搜尋抓取

内鏈的锚文本和位置:蜘蛛怎么判断一條連結值不值得跟

蜘蛛拿到一個頁面,先做的是抽連結

蜘蛛下载完 HTML,除了提取正文,還會把頁面里的連結一條條抽出来,连同锚文本、連結周围的文字、以及它在 HTML 中出現的位置一起记下,放進待抓队列。队列里先抓谁後抓谁,除了頁面自身的更新频率和重要性,連結层面的信息也占一部分。所以内鏈不只是「让蜘蛛能找到」,它還影响蜘蛛對一條連結值不值得跟的判断。

锚文本:给目标頁的一句說明

锚文本就是連結上可点击的那段文字。蜘蛛通常把它当作目标頁的一份简短语义描述。如果全站都用「点击這里」「了解更多」来鏈出,這份描述的信息量就很低,蜘蛛只能靠目标頁自身内容重新判断。更實用的做法是让锚文本自然多样:有的用頁面标题,有的用頁面核心概念,有的是上下文里顺口的说法。全站模板统一成完全相同的锚文本並没有額外好處,反而顯得不自然。

  • 图片連結记得寫 alt,蜘蛛主要靠 alt 和周围文字理解連結指向。
  • 同一段里對同一個 URL 连續鏈多次,通常只记錄第一條,重复的可以删掉。
  • 锚文本別硬塞關鍵詞,讀起来別扭的句子對用戶和蜘蛛都不友好。

位置:正文里的連結和頁脚里的連結不是一回事

同一條連結放在正文段落中,蜘蛛能看到完整的上下文;放在全站頁脚或侧栏,往往只有几個字的锚文本,而且每個頁面都在重复。全站導航和頁脚是必要的,但如果頁脚里塞進几十上百條連結,每條能分到的關注就會被稀释。

從「能否被發現」的角度看,這两類連結都有效;從「哪條更值得優先抓」的角度看,正文里的連結通常更占優势。重要頁面尽量從正文自然鏈出,不要只靠頁脚兜底。

連結在 HTML 中出現得越靠前,越早被解析和排队,但這不代表後面的連結不會被抓,只是节奏可能慢一些。

一頁鏈出多少條比較合适

並没有一個硬性數字,真正要控制的是重复連結和無效連結的數量:

  • 分頁、标簽、归档頁會制造大量指向同一批 URL 的連結,蜘蛛反复走同一條路,新頁面反而排不上队。
  • 自動插入的「相關推荐」如果范围太宽,容易變成半随机的連結堆。
  • 已屏蔽或已下线的頁面,内鏈要及时清理,否則蜘蛛每次都會撞一遍。

几個容易被忽略的坑

  • JS 注入的連結:在執行时才插入 DOM 的連結,蜘蛛可能需要渲染才能看到,也可能看不到。關键路径上的連結尽量寫在 HTML 源碼里。
  • 隐藏連結:display:none 或與背景同色的文字里的連結,通常不會被当作正常内鏈對待。
  • 带追踪參數的站内連結:同一篇文章被鏈成 /a?from=home 和 /a?from=list,蜘蛛可能当成两個 URL 分別處理。
  • nofollow 一類属性的用法:用来标记广告、用戶生成内容等确實不想背书的地方,而不是全站通用。

自己動手查一遍

最直接的办法是把 JS 關掉,看源碼里還剩多少連結能点到。用 curl 抓一次頁面源碼,搜一下目标 URL 是否存在;再對着服務器日誌看目标頁最近一次被抓取时来源頁是哪几個,就能判断它主要靠哪條路径被發現。如果某條重要連結只出現在頁脚,日誌里来源頁也會是一大片模板頁,那條路走起来就很勉强。

内鏈的調整不是一次性的:内容增删、模板改版、栏目調整都會改變連結结构。定期挑几個重要頁面,從首頁開始按用戶會走的路径点過去,確認這條路没有断点,比纠结某一處锚文本的措辞更有意义。