搜索抓取

内链的锚文本和位置:蜘蛛怎么判断一条链接值不值得跟

蜘蛛解析页面时会抽出所有链接,并记录锚文本、上下文和所在位置。锚文本相当于目标页的一份简短语义说明,正文里的链接通常比全站页脚链接更占优势。控制重复链接与无效链接的数量,把关键页写在 HTML 源码的正文里,能让新页面被发现的路径更顺。

搜索抓取

内链的锚文本和位置:蜘蛛怎么判断一条链接值不值得跟

蜘蛛拿到一个页面,先做的是抽链接

蜘蛛下载完 HTML,除了提取正文,还会把页面里的链接一条条抽出来,连同锚文本、链接周围的文字、以及它在 HTML 中出现的位置一起记下,放进待抓队列。队列里先抓谁后抓谁,除了页面自身的更新频率和重要性,链接层面的信息也占一部分。所以内链不只是「让蜘蛛能找到」,它还影响蜘蛛对一条链接值不值得跟的判断。

锚文本:给目标页的一句说明

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

  • 图片链接记得写 alt,蜘蛛主要靠 alt 和周围文字理解链接指向。
  • 同一段里对同一个 URL 连续链多次,通常只记录第一条,重复的可以删掉。
  • 锚文本别硬塞关键词,读起来别扭的句子对用户和蜘蛛都不友好。

位置:正文里的链接和页脚里的链接不是一回事

同一条链接放在正文段落中,蜘蛛能看到完整的上下文;放在全站页脚或侧栏,往往只有几个字的锚文本,而且每个页面都在重复。全站导航和页脚是必要的,但如果页脚里塞进几十上百条链接,每条能分到的关注就会被稀释。

从「能否被发现」的角度看,这两类链接都有效;从「哪条更值得优先抓」的角度看,正文里的链接通常更占优势。重要页面尽量从正文自然链出,不要只靠页脚兜底。

链接在 HTML 中出现得越靠前,越早被解析和排队,但这不代表后面的链接不会被抓,只是节奏可能慢一些。

一页链出多少条比较合适

并没有一个硬性数字,真正要控制的是重复链接和无效链接的数量:

  • 分页、标签、归档页会制造大量指向同一批 URL 的链接,蜘蛛反复走同一条路,新页面反而排不上队。
  • 自动插入的「相关推荐」如果范围太宽,容易变成半随机的链接堆。
  • 已屏蔽或已下线的页面,内链要及时清理,否则蜘蛛每次都会撞一遍。

几个容易被忽略的坑

  • JS 注入的链接:在运行时才插入 DOM 的链接,蜘蛛可能需要渲染才能看到,也可能看不到。关键路径上的链接尽量写在 HTML 源码里。
  • 隐藏链接:display:none 或与背景同色的文字里的链接,通常不会被当作正常内链对待。
  • 带追踪参数的站内链接:同一篇文章被链成 /a?from=home 和 /a?from=list,蜘蛛可能当成两个 URL 分别处理。
  • nofollow 一类属性的用法:用来标记广告、用户生成内容等确实不想背书的地方,而不是全站通用。

自己动手查一遍

最直接的办法是把 JS 关掉,看源码里还剩多少链接能点到。用 curl 抓一次页面源码,搜一下目标 URL 是否存在;再对着服务器日志看目标页最近一次被抓取时来源页是哪几个,就能判断它主要靠哪条路径被发现。如果某条重要链接只出现在页脚,日志里来源页也会是一大片模板页,那条路走起来就很勉强。

内链的调整不是一次性的:内容增删、模板改版、栏目调整都会改变链接结构。定期挑几个重要页面,从首页开始按用户会走的路径点过去,确认这条路没有断点,比纠结某一处锚文本的措辞更有意义。