搜索抓取

内链的三种位置:导航、面包屑与正文链接,各自把蜘蛛带向哪里

站内链接大致分三类:导航、面包屑和正文相关链接。它们承担的 URL 发现任务不同,抓取效果也不同。本文说明三类链接分别适合放在哪里、常见的写法问题,以及如何用日志判断蜘蛛是否真的沿着这些路径走,帮助你减少只靠 Sitemap 才被发现的孤岛页面。

搜索抓取

内链的三种位置:导航、面包屑与正文链接,各自把蜘蛛带向哪里

提到内链,很多人的第一反应是给文章末尾加一排相关推荐。但从蜘蛛的角度看,一个站点里真正被反复走过的链接,往往集中在三个位置:全局导航、面包屑和正文里的相关链接。它们不是谁替代谁的关系,各自负责的发现任务并不一样。

全局导航:覆盖面最广的那一层

导航出现在每个页面的顶部或侧边,蜘蛛从任意一个入口页进来,都能看到同一批链接。这是它最省力的发现通道,所以导航里放什么,实际决定了蜘蛛能多快触达你的主要栏目。

  • 导航指向的应该是长期运营的栏目页,而不是活动页、注册页或临时专题。这类页面被每次抓取反复请求,会占用抓取额度,也让真正想推的栏目被稀释。
  • 层级尽量控制在两级以内。更深的页面交给栏目页往下带,不要指望一个导航就覆盖全站。
  • 用普通的 a 标签加 href。靠 onclick 跳转、靠脚本拼接的菜单,蜘蛛不一定能执行。
  • 对导航链接使用 nofollow 要谨慎,它会让这条发现路径直接断掉。

面包屑:给页面一个能回头的层级

面包屑通常被当成用户体验的装饰,但它对抓取的意义在于提供一条从首页到当前页的完整链路。当某个详情页没有被栏目页直接链接时,面包屑还能让它留在可抓取的路径上,不至于变成孤岛。

写法上,面包屑的层级最好和 URL 路径、Sitemap 里的结构保持一致。如果面包屑指向的分类和页面实际所属的分类对不上,或者不同页面之间的层级互相矛盾,蜘蛛往往会选择更保守的那条路径来理解,反而降低了深层页面的抓取机会。

面包屑、URL 层级、Sitemap 层级这三处如果长期不一致,抓取的路径判断会变得模糊,页面的重要性也很难稳定传递下去。

正文相关链接:把抓取引向深层页面

相关链接的价值在相关性,不在数量。一个页面挂上几十个链接,每个被逐个请求的概率会被摊薄;而五到八个语义接近的链接,更容易让蜘蛛顺着正文语境继续往下走。几个实用原则:

  1. 同主题的详情页互链,形成小范围的内部闭环,而不是把所有页面都指向首页。
  2. 新页面优先从已有抓取记录的老页面链出,让它有一条现成的进入路径。
  3. 锚文本描述目标页面的内容,别写“点击这里”“查看更多”这类没有信息量的词。
  4. 同一批链接不要在每个页面重复出现,重复度太高时,蜘蛛可能只走其中一部分。

列表页与分页:别在第二页之后断掉

列表页是深层页面最主要的入口之一。常见问题是分页只保留“上一页/下一页”,而没有可爬的页码链接,蜘蛛翻到某一页之后就找不到后续。更稳的做法是保留带页码的链接,让每一页都能被直接指向;同时确认分页链接是 href 形式,而不是点击后才通过脚本加载。

如果列表内容确实很长,可以考虑按分类或时间拆成多个可独立访问的列表页,而不是无限下拉加载。加载出来的内容如果没有对应的 URL,蜘蛛即使执行了脚本,也很难把它当成一个独立的发现入口。

链接形式:能爬的和爬不到的

内链做得再多,形式不对也白费。用 href 写清楚的链接是最稳的;通过表单提交、鼠标事件、脚本动态插入的链接,蜘蛛的处理方式并不一致。至少在导航、面包屑和分页这三处,不要依赖脚本。

怎么验证内链有没有真的起作用

把访问日志里的蜘蛛请求按路径归类,看它是否沿着导航、面包屑、正文链接往下走。如果某个深层页面长期只有来自 Sitemap 的请求,没有任何内链来源,说明站内还没有给它一条稳定的进入路径,它在抓取队列里的优先级通常也不会太高。

反过来,如果发现某个栏目页被频繁请求,但它的下级页面很少出现,那大概率是栏目页到下级页的链接断了,或者链接藏在脚本里没被识别。

小结

导航负责覆盖面,面包屑负责层级一致,正文链接负责相关性引导。三者不需要写得多复杂,但要保证链接真实可爬、层级和 URL 对应、不把有限的抓取额度浪费在无意义的入口上。内链理顺之后,Sitemap 和外部链接的作用才更容易叠加起来。