蜘蛛进入一个站,通常从首页开始,顺着链接一层层往外走。走到第三、第四层之后,页面上的链接变少,能回到主干的路也变少。这时候面包屑和“返回上一级”这类导航,就成了蜘蛛继续往前走、或者回到主干的重要线索。
深层页面为什么容易变成终点
很多站点的详情页只放正文和几条相关推荐。相关推荐如果是随机拼出来的,链接指向的页面未必稳定;页面底部又没有回到分类或首页的入口,蜘蛛从这个页面出发能走的路就很有限。结果就是抓取深度停在某一层,后面的 URL 只能等下一次从别的地方被发现。
面包屑和返回链接解决的正是这个问题:它们把深层页面重新接回上层结构,让抓取路径形成回路,而不是一条断掉的线。
面包屑该指向哪里
- 每一级都应是真实存在、可访问的列表页或频道页,不要拼出并不存在的路径。
- 层级要和站点实际结构一致,URL 是三级目录,面包屑也应是三级,别多也别少。
- 最后一级通常是当前页,可以不链接,也可以指向自身,但不要指向 404。
- 文字用页面真实标题或分类名,避免“更多”“点击这里”这类没有信息量的词。
面包屑最好是服务端输出的静态 a 标签。如果它靠 JS 渲染,蜘蛛能不能看到就要看渲染能力,很多时候直接看不到,等于没写。
返回链接与“上一级”入口
列表页的返回按钮、详情页顶部的“返回栏目”,作用类似。写法上注意两点:一是链接指向列表的稳定地址,而不是带一堆参数的会话地址;二是列表页本身要能被抓取,否则蜘蛛顺着返回链接走过去也是撞墙。
返回链接不等于必须做“上一页”。把用户从详情页带回分类,比让蜘蛛在分页里原地打转更有价值。
容易踩的几个坑
- 面包屑用脚本拼接,页面源码里根本没有 href。
- 层级写错,比如商品属于“手机 > 安卓机”,面包屑里却直接从首页跳过来。
- 返回链接指向带排序或会话参数的地址,同一个列表出现多个版本。
- 移动端和桌面端结构不一致,一个能点,一个点不动。
- 面包屑指向的列表页已被删除或屏蔽,蜘蛛走到一半路就断了。
怎么确认蜘蛛真的走了这条路
最直接的办法是看日志:筛选蜘蛛的 User-Agent,观察分类页、频道页是否被反复访问,还是只有详情页被零星抓到。如果详情页抓取量不低,对应的分类页却几乎没有记录,说明路径可能没通。也可以临时在面包屑链接上带一个标记参数,看蜘蛛是否访问过带这个参数的地址。
Sitemap 能列出 URL,但它不表达层级关系;真正决定蜘蛛能不能沿着结构走的,还是页面之间的链接。面包屑和返回链接属于基础工作,做好了不会立刻带来什么变化,但结构断裂的站点,往往就是从这里开始出问题。服务器返回是否稳定、返回链接指向的页面是否可用,同样会影响这条路径能不能走通。