搜尋抓取

栏目頁抓得勤、詳情頁抓得少:抓取配比失衡的排查與調整

很多站点的抓取日誌里,栏目頁被反复訪問,詳情頁却迟迟不更新。本文從入口數量、頁面總量、參數重复和响應時間几個角度,說明抓取配比為什么會失衡,並给出可以逐步驗證的調整顺序,帮助把抓取時間落到有獨立内容的頁面上。

搜尋抓取

栏目頁抓得勤、詳情頁抓得少:抓取配比失衡的排查與調整

翻抓取日誌时,经常能看到一種分布:栏目頁、列表頁、标簽頁被反复訪問,而下面挂着的詳情頁几天才轮到一次。這類情况通常不是蜘蛛偏心,而是站点把抓取机會集中在了少數几個入口上。

先看两個數字

判断是否失衡,可以先統計两件事:一周内被抓取的獨立 URL 數量,以及其中栏目類頁面所占的比例。如果被抓的 URL 里绝大多數都是列表頁,而詳情頁總數是列表頁的几十倍,那么抓取時間其實大量消耗在了重复的框架内容上。

另一個數字是响應時間。列表頁往往要做聚合查询,如果它比詳情頁慢好几倍,蜘蛛在這里等待的時間就更長,能走的路自然更少。

常见的几種成因

  • 入口數量悬殊:首頁、導航、侧栏、相關推荐都把連結指向栏目頁,詳情頁的入口往往只有栏目頁里那一條。
  • 列表分頁一路可翻:翻頁連結能点到很深的位置,每個分頁都是獨立 URL,抓取被分頁吃掉一部分。
  • 篩選與排序參數:同一批内容被多個參數组合重复暴露出来,形成大量近似頁面。
  • 頁面体积偏大:列表頁動辄几百 KB,蜘蛛讀一頁的時間够讀好几頁詳情。
  • Sitemap 與内鏈不一致:Sitemap 里提交的是詳情頁,但站内几乎没有連結指向它們,蜘蛛顺着内鏈走时就绕開了。

調整的顺序

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

  1. 先让 Sitemap 只保留真正希望被發現的詳情頁,去掉大量分頁與參數组合。
  2. 在栏目頁首屏保證有足够數量的詳情頁直鏈,而不是全部藏在“查看更多”後面。
  3. 给列表分頁設定合理的收敛点,比如超過一定頁數後不再輸出可抓取的連結。
  4. 压缩列表頁体积,减少首屏之外的模板内容與重复区块。
  5. 改動之後观察两到四周,看詳情頁被抓的 URL 數量有没有變化,再决定下一步。
抓取配比的調整更像在修水渠,改的是流量怎么分配,而不是让蜘蛛多来几趟。

服務器稳定性也會影响分配

如果列表頁偶發超时或返回 5xx,蜘蛛的重试會占掉一部分抓取時間;詳情頁响應稳定,反而更容易被安排進来。反過来,如果詳情頁所在的服務不稳定,抓取也會退回到更容易成功的栏目頁。所以排查配比时,顺手看一眼各目錄的响應時間分布是有必要的。

观察與驗證

驗證时不要只看總抓取量。總量不變而结构發生變化,同样說明調整起了作用。可以按目錄或按 URL 模板分组統計,看看栏目、詳情、分頁三類各自的占比是否朝着预期的方向移動。

如果詳情頁數量本身很大,短時間内全部被抓並不現實。更實际的目标是让入口清晰、路径一致,使每一次抓取都尽量落在有獨立内容的頁面上,而不是在重复的框架之間来回打轉。