做搜索抓取的人常遇到一个反差:Sitemap 里明明提交了几千条地址,日志里却没有访问记录;另一些页面则天天被爬,内容却没什么价值。差别往往不在提交动作,而在站点结构本身——搜索蜘蛛是顺着链接走的,路径通不通、绕不绕,直接决定一个 URL 能不能进入抓取队列。
孤儿页:没有任何入口的地址
孤儿页指的是站内没有任何链接指向、也不在 Sitemap 中的页面,或者只有 Sitemap 一条通道的页面。前者几乎只能靠外链或历史记录被发现,后者则把全部希望押在一个入口上,一旦 Sitemap 读取失败或未及时更新,页面就长期处于沉默状态。
排查孤儿页比较实用的做法是把几个数据源交叉比对:
- 服务器日志中出现过的 URL 列表,与 CMS 后台已发布内容总数对比;
- Sitemap 文件包含的 URL 与实际页面数是否一致;
- 用抓取工具从首页出发爬一遍,看哪些页面始终没被访问到。
差集通常就是问题所在。处理方式并不复杂:给这些页面补上合理入口,比如在相关聚合页、正文推荐位或导航里加入链接,让它们至少有一条从首页可达的路径。
枢纽页:把路径长度压下来
另一端的极端是枢纽页——被大量链接指向的列表页、专题页、标签页。它们承担的是分发职责,把抓取意愿传递给下面的详情页。枢纽页设计得好,深页只需要两三跳就能到达;设计得差,所有链接都堆在首页,反而会让首页变成噪音源。
这里有几个判断标准:
- 从首页到任意一个内容页,点击次数是否控制在三到四跳以内;
- 枢纽页指向的链接数量是否过多,导致单条链接获得的关注被稀释;
- 枢纽页本身是否有稳定更新,新内容能否第一时间出现在上面。
面包屑与 HTML 站点地图:两条兜底路径
面包屑看起来只是用户体验细节,实际上给每个详情页补了一条通往分类页和首页的固定链路。当内容页因为改版、迁移而暂时失去其他入口时,面包屑往往还是通的。
HTML 站点地图页的作用类似,它把所有栏目和重要页面集中在一个页面里,用纯文本链接的形式呈现。对搜索蜘蛛来说,这是识别站点轮廓的快捷方式;对运营来说,它也是检查链接是否断裂的直观清单。需要注意的是,这个页面本身要能被抓取、能被链接到,放在空目录里就失去了意义。
用日志验证路径是否真的走通
结构设计合理不代表蜘蛛就按你想的走。定期看服务器日志,能发现一些意料之外的情况:某个分类页被抓得很勤,下面的详情页却很少被访问,说明链接位置可能太靠下;某些 URL 只在第一次抓到,之后就再没出现过,可能需要检查是否有 nofollow 或参数问题。
路径规划和实际抓取之间总会有偏差,日志是唯一能反映真实情况的数据,比任何结构图都可靠。
服务器稳定性:路径通不等于抓得到
即使内链结构没问题,抓取仍然会受服务器状态影响。返回 5xx、响应时间过长、频繁超时,都会让搜索蜘蛛降低访问频率,甚至暂时放弃某段时间的抓取。新 URL 受影响最明显,因为它们还没有历史记录,一旦首次抓取失败,重新排队可能要等很久。
- 关注 5xx 错误率的波动,尤其是内容发布高峰期;
- 检查是否有大量请求落在同一时间段,造成瞬时压力;
- 确认 CDN 或防火墙没有对搜索蜘蛛的请求做误拦截。
把稳定性当成 URL 发现的一部分来看待,会比把它们分成两个问题更接近实际。
最后,孤儿页和枢纽页其实是同一个问题的两端:一边是入口缺失,一边是入口过剩。定期用日志和抓取实测去核对,比每年改一次导航结构更有效。路径清楚、服务器稳定,URL 被发现在多数情况下只是执行顺序的问题,而不是运气问题。