搜索抓取

蜘蛛进得去也要出得来:给抓取路径留一条回程

蜘蛛能顺利进站,不代表它能继续往里走。很多抓取路径在正文页就断了:没有实体链接、没有面包屑、相关推荐全靠脚本渲染。本文从单向死路的成因、面包屑的写法、正文页横向出口和内链闭合四个角度,讲怎么给蜘蛛留一条回程,并附一份可以直接照做的检查清单。

搜索抓取

蜘蛛进得去也要出得来:给抓取路径留一条回程

不少站点在抓取入口上花了不少功夫:首页、栏目页、Sitemap 都安排得清楚,蜘蛛也确实进来了。但抓取路径的问题往往出在“出去”这一环——正文页除了一个返回按钮,没有别的实体链接可以继续走。蜘蛛爬到这一层,路就断了,剩下那些页面只能等下一次从首页重新出发。

单向死路是怎么形成的

常见的有三种:一是整站靠脚本渲染导航,蜘蛛拿到的 HTML 里看不到链接;二是返回、更多、相关文章这类位置用了 span 或图片加点击事件,用户点得动,蜘蛛走不动;三是内链全都指向首页和少数几个热门页,冷门页在里面没有位置,自己也没有出去的链接。结果就是抓取路径变成一条条射线,从入口射出去,到正文页结束。

面包屑:一条成本最低的回程

面包屑是正文页最容易被忽略的出口。它一般按“首页 > 栏目 > 子栏目 > 当前页”排列,每一级都是可点击链接。对蜘蛛来说,这不只是导航,而是一条能向上回到栏目的稳定路径,顺带把当前页与栏目之间的从属关系讲清楚。

  • 用可点击的链接元素,不要用 span 加点击事件代替;
  • 层级尽量与真实目录一致,不要为了排版好看拼一条实际不存在的路径;
  • 放在正文上方、DOM 中靠前的位置,别塞在页脚最底部;
  • 当前页那一级不加链接即可,避免自指循环。

正文页还能往哪儿走

除了向上回栏目,正文页还可以留几个横向出口:同栏目下的上一篇 / 下一篇、按标签聚合的相关文章、同一话题的延伸阅读。这些位置的价值在于,它们能把蜘蛛带到那些不在首页露出、也不在列表页前几屏的页面。

要注意的是数量。一个正文页放三到八条站内链接通常够用,几十条堆在文末,反而会让真正重要的目标被稀释。另外,尽量让链接指向内容相关的页面,而不是随机推荐一堆无关文章——蜘蛛不判断相关性,但相关性决定了这条路径值不值得继续走。

让路径闭合,而不是绕圈

还有一类问题正好相反:路径太多,彼此打转。比如 A 页推荐 B,B 页推荐 A,C 页又同时推荐 A 和 B,几轮下来蜘蛛一直在几个页面之间循环,没走到更深的地方。判断方法不难:从栏目页出发,看能不能顺着链接走进站内最深的正文页,再看这些页面之间有没有形成小闭环把路堵死。

内链的目标不是让每个页面被链很多次,而是让每个重要页面都能被走到,并且走进去之后还有路可走。

一份可以照着做的检查清单

  1. 随机挑十个正文页,查看源代码,数一数有多少条指向站内其他页面的可点击链接;
  2. 检查这些链接是否依赖脚本才能生成,关掉脚本后还能不能看到;
  3. 沿着某个正文页的面包屑往上点,看能否顺利回到栏目页和首页;
  4. 从栏目页出发,尝试只靠内链走到最深的正文页,记录中间断在哪一步;
  5. 在服务器日志里观察被频繁抓取的是不是总是那几个页面,如果是,说明出口太窄。

抓取路径不需要设计得多复杂。入口清楚、层级清楚、每条链路都有回程,蜘蛛就有理由继续往下走,站点里的页面也才有机会被一个个发现。