搜尋抓取

搜尋蜘蛛抓取:重定向鏈長度與跳轉類型對入口發現和抓取预算的核對

重定向本身不致命,但鏈式跳轉、跳轉類型混用、跳向無關頁面和循环跳轉,會让蜘蛛在入口發現與预算分配上多做無用功。本文按核對顺序拆解常见跳轉形態,给出日誌观察点與收鏈方法,帮助把跳轉压缩到一跳直達,减少抓取浪費。

搜尋抓取

搜尋蜘蛛抓取:重定向鏈長度與跳轉類型對入口發現和抓取预算的核對

站点做改版、換域名、上 HTTPS、统一带 www 或不带 www 的寫法时,重定向几乎不可避免。單跳 301 属于正常且被推荐的配置,問题出在“跳一次再跳一次”的鏈式结构、跳轉類型混用,以及跳向無關頁面。這些情况不會立刻让頁面消失,但會让抓取在入口层多绕路,预算被消耗在不产生新信息的請求上。

重定向在抓取流程里發生了什么

蜘蛛拿到一個 URL 後,會先請求它,讀取响應头。如果是 3xx,它需要记錄目标地址,再發起一次請求,才能拿到正文和其中的連結。跳一次是成本,跳三次就等于把一次抓取變成四次請求。對單條 URL 来说不算什么,但如果全站導航、Sitemap、外鏈都落在需要多跳的地址上,累积起来的開销就很明顯。

更麻烦的是入口發現:只有当蜘蛛真正取到最终頁面的 HTML,頁面里的連結才會進入待抓队列。跳轉鏈越長,中間任何一环超时、返回错誤或指向 404,鏈條後面的頁面就都不會被發現。

常见需要核對的重定向形態

  • 鏈式跳轉:A→B→C,常见于先跳 HTTPS 再跳 www,或舊域名先跳新域名再跳路径。
  • 跳轉類型混用:永久迁移用 302 或 307,蜘蛛按临时跳轉處理,可能仍保留舊 URL 的抓取與展示。
  • 跳到無關頁面:404 頁面被 302 送到首頁,或已下架商品跳到分類頁,容易形成大量软着陆。
  • 循环跳轉:A→B→A,蜘蛛最终只能报错放弃,頁面長期不被取到。
  • 客戶端跳轉:meta refresh 或 JS 跳轉,首屏 HTML 里可能没有目标地址的可解析連結。
  • 协议與主机名多次切換:http→https→带 www→带尾斜杠,一次請求走完四跳。

建议的核對顺序

  1. 用爬虫工具或命令行批量取全站入口 URL 的响應头,记錄狀態碼與 Location。
  2. 把 Location 再取一次,看是否還有 3xx,直到出現 200 或 4xx,統計跳轉次數分布。
  3. 重点检查跳轉两次以上的 URL,判断是配置遗漏還是歷史遗留。
  4. 比對 Sitemap 與内鏈:如果里面寫的是舊地址,把声明改成最终地址。
  5. 检查 robots.txt、canonical、Sitemap 中的地址是否與最终落地地址一致。
  6. 確認跳轉類型:永久迁移用 301/308,临时活動才用 302/307。

日誌里怎么看

抓取日誌中,如果大量 301、302 集中在同一批路径,且這些路径的請求量明顯高于實际頁面數,說明站内或站外還在用舊地址。可以按狀態碼分组,看 3xx 請求占比,再拉出對應的来源頁,找到是谁在持續輸出舊連結。

判断标准很简單:一條 URL 從被請求到拿到正文,理想情况只需要一次跳轉,而且這一跳應该指向最终地址。

收鏈时的几個操作

  • 把 http、https、www、非 www 的四種组合收敛到一種,其余全部一跳直達。
  • 舊路径退役时,尽量直接跳到新路径,不要先跳首頁再让用戶自己找。
  • Sitemap 只提交最终地址,不要提交會跳轉的 URL。
  • 分頁、篩選參數頁如果有跳轉,確認跳轉後仍能被正常抓取。
  • 改完跳轉後,观察一段時間内 3xx 請求占比是否下降,最终頁面的抓取量是否回升。

重定向本身不是错誤。把跳轉控制在必要范围内、让每個入口一跳到位,才是减少抓取浪費的關键。