很多站点在提收錄时,第一反應是“蜘蛛来得不够多”。但打開服務器日誌之後,常见的情况正好相反:蜘蛛来得很勤,只是把大部分時間花在了没有收錄價值的地址上,真正需要收錄的新頁面反而分不到几次抓取。
這篇文章讨论的不是怎么让蜘蛛變多,而是当抓取次數被低價值地址吃掉时,怎么用日誌分清主次,再按代價從小到大逐步收口。
先分清:抓取是被消耗,還是被浪費
“消耗”和“浪費”的差別在于這些地址本来有没有價值。分頁、篩選、詳情頁都需要抓取,這是正常的消耗;而带了一長串跟踪參數的副本、早就下线的舊地址、几個 URL 指向同一篇内容,這類抓取很难带来新的收錄,更接近浪費。
判断方法不复杂:把某段時間的抓取日誌按地址模式归類,看每一類各占多大比例。如果某几類既没有站内入口、也没有外鏈的地址占了三成以上,就值得處理。
日誌里最值得看的几類地址
- 带參數的副本:跟踪參數、排序參數、會话 ID,同一篇内容被拆成几十個地址。
- 重定向鏈和失效地址:A 跳到 B、B 再跳到 C;或者早已刪除但仍被反复請求的 404。
- 重复的列表頁:列表按不同排序、不同视图各生成一套 URL,内容几乎一样。
- 内部搜尋與篩選结果頁:數量可以無限增長,且大多没有獨立價值。
- 孤岛頁面:站内没有任何連結指向,只在 sitemap 或歷史记錄里存在。
先看比例,再看绝對數量。某個類別的抓取次數是 200 還是 2000,本身說明不了問题;它在總抓取里占多少、這些地址有多少最终被收錄,才是判断依據。
處理顺序:從影响最小的一步開始
- 修狀態碼。已经刪除的内容不要繼續返回 200 或空模板,该 404 就 404,该 410 就 410。把 200 的空壳頁当作正常内容,是浪費抓取最常见的原因。
- 缩短跳轉鏈。多級 301 不但慢,還會让蜘蛛對目标地址的判断變模糊,统一成一跳到位。
- 處理參數副本。能在服務端忽略的參數就忽略,不能忽略的在頁面上标好規范地址,並确保内部連結只指向規范版本。
- 限制低價值生成源。内部搜尋结果、無限篩選這類頁面,優先從不生成開始,比事後屏蔽更干净。
- 最後才考虑 robots.txt。它是禁止抓取而不是禁止收錄,被挡住的地址如果還有外鏈,仍可能出現在索引里,只是内容不可控。
顺序上有個原則:先减少無用地址的产出,再谈屏蔽和收口。只在 robots.txt 上加几行,产出源不改,日誌里的比例不會有明顯變化。
哪些地址其實不用動
不是所有“看起来重复”的抓取都要處理。分頁、必要的篩選入口、有獨立價值的聚合頁,本身承担着發現深层連結的作用,贸然屏蔽可能让新頁面失去入口。判断标准可以简單一些:這個地址是否帮助用戶或蜘蛛找到別的内容?如果是,就保留。
收口之後看什么
改動上线後不要当天就下结论,抓取和索引都有延迟,观察周期通常按周計算。可以關注三個變化:
- 目标頁面的抓取次數是否上升,而不只是總量變化;
- 低價值地址的抓取占比是否下降;
- 新發布頁面從被發現到被抓取的時間是否缩短。
如果低價值地址的比例降下来了,新頁面的抓取却没有增加,問题多半不在額度分配,而在入口和内鏈:新頁面可能离首頁太遠,或者根本没有稳定的站内連結指向它。
小结
抓取額度不是靠“催”出来的,而是靠梳理地址结构省出来的。先從日誌里分清哪些抓取是必要的、哪些是可以避免的,再按“修狀態碼、修跳轉、處理參數、限制生成源、最後才屏蔽”的顺序動手,比一上来就改 robots.txt 更稳,也更容易看出效果。