蜘蛛抓取站点的方式,本质上是顺着链接一层层走。入口给得再好,如果某个页面里没有指向其他页面的可抓取链接,这条路径就到此为止。运营里常说的死胡同页面,指的就是这类只有入口、没有出口的 URL。
什么样的页面算死胡同
判断标准很简单:把页面当纯 HTML 打开,看正文区域有多少条能被爬虫读到的 a 标签链接。如果除了导航和页脚的全站链接之外一条内链都没有,这个页面在抓取路径上基本就是终点。
- 专题页、活动页,只有一张长图和几个按钮
- 详情页没有相关推荐,也没有上一篇下一篇
- 列表页翻到最后一页,没有回到首页或栏目的链接
- 附件页、PDF、演示页,只提供下载不提供返回
- 跳转靠 onclick 或 div 点击,没有 href
蜘蛛走进死胡同之后会怎样
不会报错,也不会因此被惩罚,只是这条路径没有下一步。带来的影响是间接的:
- 页面里的新内容缺少第二条发现路径,只能等 Sitemap 或外链
- 抓取频次靠首页和栏目的推送维持,一旦导航调整就容易掉队
- 从主干分出来的抓取预算没有回流到其他页面
所以要区分清楚:死胡同影响的是路径的连续性,不是单页能不能被抓。页面本身该被抓还是会抓。
给死胡同补出口的几个做法
- 面包屑:至少让蜘蛛能回到栏目页和首页,这是成本最低的出口。
- 相关推荐:放 3 到 8 条同栏目或同标签链接,覆盖真正相关的页面。
- 上下篇导航:适合内容型站点,能形成一条横向路径。
- 标签或聚合页:把同类页面收进一个可抓取的列表页。
- Sitemap 补充:确实不想加内链的页面,至少在地图里保留发现入口。
这些出口都必须是 a 标签加 href,写在服务端返回的 HTML 里。用按钮加 JS 跳转,蜘蛛读不到,等于没有。
出口链接不要堆在同一处
有些站点意识到死胡同问题之后,会在页脚塞几十条全站链接,或者每个页面都放一大块热门推荐。结果是每个页面长得都一样,蜘蛛走到哪里看到的都是同一批 URL,路径等于原地打转。
出口链接的作用不是数量多,而是让蜘蛛从当前页走到下一批还没抓过的页面。指向同一批页面的链接放十处,效果和放一处差不多。
用日志验证出口是否有效
打开服务器日志,挑几个典型的落地页,看蜘蛛在这次请求之后紧接着访问了哪些 URL。如果大量请求后面跟着的是首页或直接退出,说明出口没起到作用;如果能看到从详情页走到同类详情页,路径就是通的。再把日志和 Sitemap 的抓取记录对照一下,可以判断哪些页面是靠地图兜底、哪些是靠内链自然发现的。
小结
- 先确认页面正文里有没有可抓取的 a 链接
- 出口链接优先指向栏目页、同类页、聚合页
- 避免全站统一的大块链接,让路径有分叉
- 确实不加内链的页面,用 Sitemap 保留发现入口