搜尋抓取

抓取预算被谁吃掉了:從訪問日誌里找出蜘蛛绕圈子的入口

從日誌出發,梳理蜘蛛在站内绕圈子的几類常见形態:篩選參數、空列表頁、站内搜尋與孤岛頁面,並给出聚類、對照、按序處理的检查步骤,帮助运营者把抓取机會花在真正有内容的頁面上。

搜尋抓取

抓取预算被谁吃掉了:從訪問日誌里找出蜘蛛绕圈子的入口

很多站点在谈抓取时,容易把它当成一個“總量”問题:蜘蛛一天来了多少次、抓了多少條 URL。但實际运营中更有用的视角是:這些抓取机會被花在了哪些頁面上,其中多少是真正有内容的頁面,又有多少只是蜘蛛在站内绕圈子。

先明确一点:抓取预算由两邊共同形成

所谓“抓取预算”,並不是一個官方公布的配額,更像是站点侧和搜尋引擎侧行為叠加出来的结果:一邊是蜘蛛愿意投入的並發與訪問频率,另一邊是站点的响應速度、URL 總量和連結结构。前者你影响有限,後者才是可以動手的地方。

所以判断预算是否被浪費,不要靠猜,要看日誌。

几類常见的“吃预算”形態

  • 篩選參數组合:颜色、排序、頁碼互相叠加,生成大量内容几乎相同的地址。哪怕每個頁面都能正常打開,也會持續占用抓取机會。
  • 空结果頁與空列表頁:返回 200 但列表為空,蜘蛛下次仍可能再来走一遍。
  • 站内搜尋结果頁:如果對蜘蛛開放,很容易被当成新内容反复抓取。
  • 會话 ID、跟踪參數:同一内容被拆成多條地址,發現路径被稀释。
  • 孤岛頁面:只存在于 Sitemap、站内没有任何入口,抓到一次之後缺少回訪路径。
  • 分頁鏈太深:列表頁很靠後的條目,抓取價值往往低于抓取成本。

從日誌里怎么看出来

不需要复杂工具,先做三步對照。

  1. 按蜘蛛 UA 過滤出一天或一周的請求,按路径前缀聚類,看請求量最高的目錄是哪些。
  2. 對每個高频目錄,抽几條看狀態碼和頁面标题:是正常内容、空頁,還是參數變体。
  3. 再對照這些路径是否出現在内鏈或 Sitemap 中。如果高频路径大多来自參數拼接而非正常入口,基本可以確認是在绕圈子。

處理顺序:先堵住入口,再谈優化

不少人第一反應是去 Sitemap 里删地址,但 Sitemap 只是發現渠道之一,真正的持續来源往往還是站内連結。顺序上更稳妥的做法是:

  1. 對無價值參數地址,用 robots.txt 規則或頁面級 noindex 做区分處理,注意两者作用並不相同。
  2. 检查站内連結,尤其是導航、面包屑和列表模板,別把參數地址直接寫進 href。
  3. 把真正需要被抓的内容放進稳定的内鏈路径,让蜘蛛每次到達之後有明确的下一步。
  4. 保證响應稳定,避免大量 5xx 或连接超时,把抓取机會消耗在無意义的重试上。

這几步里,模板层面的修改往往见效最慢但最彻底:一個循环里多寫了一层參數,就會让整站多出成千上萬條地址;改一次模板的成本,通常比後来一遍遍收拾日誌低得多。

抓取效率的改善通常是渐進的。處理掉一類冗余入口之後,未必立刻看到收錄量的變化,但日誌里“無意义請求”的占比會先降下来,這才是相對可观察的信号。

几個不建议的做法

  • 為了“让蜘蛛多来”而人為堆砌内鏈或入口頁面,短期請求量會涨,但抓的多半是你自己造出来的頁面。
  • 直接屏蔽整個目錄,可能连带屏蔽掉有價值的頁面;屏蔽前先按路径粒度確認。
  • 频繁改動 robots.txt 並期待立刻见效,蜘蛛對新規則的反應需要時間。

把日誌当成一張站内地图,定期看看蜘蛛實际走的是哪几條路,比單看收錄數字更能說明结构上的問题。