搜索抓取

栏目页抓得勤、详情页抓得少:抓取配比失衡的排查与调整

很多站点的抓取日志里,栏目页被反复访问,详情页却迟迟不更新。本文从入口数量、页面总量、参数重复和响应时间几个角度,说明抓取配比为什么会失衡,并给出可以逐步验证的调整顺序,帮助把抓取时间落到有独立内容的页面上。

搜索抓取

栏目页抓得勤、详情页抓得少:抓取配比失衡的排查与调整

翻抓取日志时,经常能看到一种分布:栏目页、列表页、标签页被反复访问,而下面挂着的详情页几天才轮到一次。这类情况通常不是蜘蛛偏心,而是站点把抓取机会集中在了少数几个入口上。

先看两个数字

判断是否失衡,可以先统计两件事:一周内被抓取的独立 URL 数量,以及其中栏目类页面所占的比例。如果被抓的 URL 里绝大多数都是列表页,而详情页总数是列表页的几十倍,那么抓取时间其实大量消耗在了重复的框架内容上。

另一个数字是响应时间。列表页往往要做聚合查询,如果它比详情页慢好几倍,蜘蛛在这里等待的时间就更长,能走的路自然更少。

常见的几种成因

  • 入口数量悬殊:首页、导航、侧栏、相关推荐都把链接指向栏目页,详情页的入口往往只有栏目页里那一条。
  • 列表分页一路可翻:翻页链接能点到很深的位置,每个分页都是独立 URL,抓取被分页吃掉一部分。
  • 筛选与排序参数:同一批内容被多个参数组合重复暴露出来,形成大量近似页面。
  • 页面体积偏大:列表页动辄几百 KB,蜘蛛读一页的时间够读好几页详情。
  • Sitemap 与内链不一致:Sitemap 里提交的是详情页,但站内几乎没有链接指向它们,蜘蛛顺着内链走时就绕开了。

调整的顺序

不建议一上来就大改结构。可以按下面的顺序小步验证:

  1. 先让 Sitemap 只保留真正希望被发现的详情页,去掉大量分页与参数组合。
  2. 在栏目页首屏保证有足够数量的详情页直链,而不是全部藏在“查看更多”后面。
  3. 给列表分页设置合理的收敛点,比如超过一定页数后不再输出可抓取的链接。
  4. 压缩列表页体积,减少首屏之外的模板内容与重复区块。
  5. 改动之后观察两到四周,看详情页被抓的 URL 数量有没有变化,再决定下一步。
抓取配比的调整更像在修水渠,改的是流量怎么分配,而不是让蜘蛛多来几趟。

服务器稳定性也会影响分配

如果列表页偶发超时或返回 5xx,蜘蛛的重试会占掉一部分抓取时间;详情页响应稳定,反而更容易被安排进来。反过来,如果详情页所在的服务不稳定,抓取也会退回到更容易成功的栏目页。所以排查配比时,顺手看一眼各目录的响应时间分布是有必要的。

观察与验证

验证时不要只看总抓取量。总量不变而结构发生变化,同样说明调整起了作用。可以按目录或按 URL 模板分组统计,看看栏目、详情、分页三类各自的占比是否朝着预期的方向移动。

如果详情页数量本身很大,短时间内全部被抓并不现实。更实际的目标是让入口清晰、路径一致,使每一次抓取都尽量落在有独立内容的页面上,而不是在重复的框架之间来回打转。