搜尋抓取

蜘蛛在同一條路上折返:重复抓取路径是怎么形成的

蜘蛛在站内走的是連結铺出来的路。当分頁、标簽、篩選參數和導航互相指来指去形成閉环,它就會在同一批 URL 上来回折返,抓取次數看着不少,真正的新頁面却排不上队。本文從日誌里能看到的信号、折返带来的代價,到路径收拢的具体做法,梳理如何把抓取引向主线。

搜尋抓取

蜘蛛在同一條路上折返:重复抓取路径是怎么形成的

蜘蛛抓站的過程很像一次没有全局地图的巡检:它手里只有目前頁面上的連結,走一步看一步。当站内連結關系出現环状结构,蜘蛛就會在几個頁面之間来回折返,把同一批 URL 反复取回。這類折返不一定报错,日誌里看起来也抓得很勤,但真正的新頁面反而排不上队。

折返是怎么形成的

折返通常不是某一條連結的問题,而是几组連結组合出来的结果。

  • 分頁與列表互鏈:第 2 頁鏈回第 1 頁,第 1 頁又鏈到第 2 頁,翻頁控件還带着上一頁、下一頁、首頁、末頁,蜘蛛很容易在头几頁里绕圈。
  • 标簽與聚合頁:标簽頁之間互相推荐,聚合頁又把标簽頁列出来,形成一個小型閉环。
  • 篩選參數:颜色、排序、每頁數量等參數组合出大量 URL,它們指向的其實是同一批内容,却各自成為一條可抓取的入口。
  • 面包屑與導航:多級導航层层回指,深處頁面同时被導航、面包屑和正文連結指向同一個地址的不同寫法。

日誌里能看到的折返信号

把服務器日誌按 UA 過滤出蜘蛛請求後,可以重点看几件事:

  1. 同一路径在單位時間内出現的次數,尤其是带參數的變体。
  2. 抓取時間間隔是否越来越短,說明蜘蛛認為這里有新内容。
  3. referer 字段是否總在同一小圈頁面之間跳。
  4. 狀態碼分布里 200 占比很高,但唯一 URL 數的增長却明顯偏慢。
抓取次數多,不等于抓取面广。前者是量,後者才是覆盖。

折返带来的代價

蜘蛛的抓取资源是有限的。当它把時間花在重复路径上,新 URL、刚刚更新過的頁面、需要重訪的老頁面都會被推迟。更麻烦的是,如果這些折返路径還带上了動態參數,抓回来的可能只是同一份内容的多個副本,後續還得靠規范化去收拾。

把路径收拢的几種做法

  • 先定主路径:每個内容頁面選一個規范地址,其余變体用 canonical 指回主路径,内鏈也只指向主路径。
  • 弱化翻頁回指:分頁序列保留下一頁即可,回到首頁、末頁的連結並非必须。
  • 參數入口收口:排序、篩選這類參數頁面,如果不打算让它們參與抓取,就在 robots 里挡住或加上 nofollow,避免它們成為折返节点。
  • Sitemap 只放主线:把最重要的頁面放進 Sitemap,让它成為一條不绕行的入口,而不是把所有變体都塞進去。
  • 检查内鏈的指向寫法:www 與非 www、带斜杠與不带斜杠、大小寫差异,都會让同一個頁面在蜘蛛眼里變成两條路。

服務器层面配合什么

路径收拢之後,還要保證蜘蛛走到每個地址时能稳定拿到响應。响應時間忽長忽短、偶尔超时或返回 5xx,都會让蜘蛛放慢回訪,間接拉長整站被重新巡检的周期。日誌里如果發現折返和超时集中在同一时段,可以先看那個时段的资源占用情况。

折返本身不是故障,它更像是站内連結结构寫出来的一條預設路线。定期從日誌里翻一翻這條路线,把不必要的小圈拆掉,蜘蛛的每一次往返才更接近你想要覆盖的頁面。