蜘蛛在站点里移动,靠的是一层层的链接。从一个入口页出发,跟着链接进入栏目页、列表页、详情页,再顺着页面上的其他链接继续往下走。只要链路上某一环断了,蜘蛛就只能退回抓取队列,去处理别的地址。
什么是抓取路径上的死胡同
如果一个页面被抓取之后,页面上没有指向其他站内页面的可用链接,蜘蛛就没有下一步可走。它不会停在那里干等,而是回到队列里拿下一个地址。偶尔几个这样的页面不构成问题,但如果这类页面批量存在,抓取就会变成大量“抓一次就回退”的动作:深度走不下去,新页面被发现的时间被拉长。
几种常见的死胡同形态
- 列表页翻到最后一页,既没有下一页,也没有返回栏目或热门入口。
- 详情页只有正文,没有面包屑、没有相关推荐、没有上下篇或分类链接。
- 分页参数加到上限之后,页面只剩空壳,出链全部消失。
- 链接靠 JS 渲染出来,蜘蛛拿到的 HTML 里根本没有可跟的 href。
- 错误页、空结果页照样返回 200,页面上却没有任何可走的链接。
这些情况的共同点是:页面本身可能被抓到了,但没有把抓取能力传递出去。
出口不用多,要能接着走
给页面补出口,重点不在数量,而在“下一步是否有意义”。面包屑能回到上一层,分类链接能横向进入同类内容,相关推荐能带蜘蛛走到新的详情页,分页的上一页与下一页能把列表打通。几个稳定的出口,通常比页脚堆几十个全站链接更有效。
内链的作用不只是给人点,也是给蜘蛛一条能原路返回、并且继续向前的路。
需要留意的是,出口要出现在 HTML 里。用按钮、图片或纯 JS 事件做的“链接”,蜘蛛跟不过去,等于没有。
死胡同多了,会连累抓取节奏
回退动作本身也是请求。抓取路径大面积断掉时,蜘蛛更容易在一个小范围里反复进出,服务器承压上升。反过来,如果服务器响应已经变慢,蜘蛛会主动放慢抓取,覆盖推进更慢,死胡同带来的影响就被放大。所以抓取路径的整理,通常要和服务器稳定性一起看。
怎么排查和改
- 翻蜘蛛日志,找那些被抓过一次就再没有后续请求的 URL,看看它们所在的模板是否缺出链。
- 抽查列表页的最后一页、空结果页、详情页模板,确认有没有可跟的站内链接。
- 检查链接是否为真实的 a 标签 href,移动端和 PC 端模板都要看。
- 给分页到底的页面留一个返回栏目或返回首页的入口,别让路径断在最后一页。
- Sitemap 可以作为兜底通道,但不能替代内链,两条路同时存在更稳。
有些死胡同不用管
404 页、提交成功页、退出页这类页面本来就不需要承接抓取,没有出链是正常的。真正要处理的是那些本来应该继续往下走的页面:列表、详情、聚合、标签页。判断标准也简单——用户看完这一页,还有没有下一站可去。
抓取路径是一条条具体的线。把线头收好,蜘蛛能走的路自然就多了。