翻抓取日誌时,经常能看到一種分布:栏目頁、列表頁、标簽頁被反复訪問,而下面挂着的詳情頁几天才轮到一次。這類情况通常不是蜘蛛偏心,而是站点把抓取机會集中在了少數几個入口上。
先看两個數字
判断是否失衡,可以先統計两件事:一周内被抓取的獨立 URL 數量,以及其中栏目類頁面所占的比例。如果被抓的 URL 里绝大多數都是列表頁,而詳情頁總數是列表頁的几十倍,那么抓取時間其實大量消耗在了重复的框架内容上。
另一個數字是响應時間。列表頁往往要做聚合查询,如果它比詳情頁慢好几倍,蜘蛛在這里等待的時間就更長,能走的路自然更少。
常见的几種成因
- 入口數量悬殊:首頁、導航、侧栏、相關推荐都把連結指向栏目頁,詳情頁的入口往往只有栏目頁里那一條。
- 列表分頁一路可翻:翻頁連結能点到很深的位置,每個分頁都是獨立 URL,抓取被分頁吃掉一部分。
- 篩選與排序參數:同一批内容被多個參數组合重复暴露出来,形成大量近似頁面。
- 頁面体积偏大:列表頁動辄几百 KB,蜘蛛讀一頁的時間够讀好几頁詳情。
- Sitemap 與内鏈不一致:Sitemap 里提交的是詳情頁,但站内几乎没有連結指向它們,蜘蛛顺着内鏈走时就绕開了。
調整的顺序
不建议一上来就大改结构。可以按下面的顺序小步驗證:
- 先让 Sitemap 只保留真正希望被發現的詳情頁,去掉大量分頁與參數组合。
- 在栏目頁首屏保證有足够數量的詳情頁直鏈,而不是全部藏在“查看更多”後面。
- 给列表分頁設定合理的收敛点,比如超過一定頁數後不再輸出可抓取的連結。
- 压缩列表頁体积,减少首屏之外的模板内容與重复区块。
- 改動之後观察两到四周,看詳情頁被抓的 URL 數量有没有變化,再决定下一步。
抓取配比的調整更像在修水渠,改的是流量怎么分配,而不是让蜘蛛多来几趟。
服務器稳定性也會影响分配
如果列表頁偶發超时或返回 5xx,蜘蛛的重试會占掉一部分抓取時間;詳情頁响應稳定,反而更容易被安排進来。反過来,如果詳情頁所在的服務不稳定,抓取也會退回到更容易成功的栏目頁。所以排查配比时,顺手看一眼各目錄的响應時間分布是有必要的。
观察與驗證
驗證时不要只看總抓取量。總量不變而结构發生變化,同样說明調整起了作用。可以按目錄或按 URL 模板分组統計,看看栏目、詳情、分頁三類各自的占比是否朝着预期的方向移動。
如果詳情頁數量本身很大,短時間内全部被抓並不現實。更實际的目标是让入口清晰、路径一致,使每一次抓取都尽量落在有獨立内容的頁面上,而不是在重复的框架之間来回打轉。