搜尋抓取

抓取路径上的断点:蜘蛛走到一半停下的几種常见原因

蜘蛛抓取站点更像顺着連結往前走:從入口頁经過列表頁,再進入詳情頁。鏈條中任何一环缺少可跟随的連結,後面的頁面就可能長時間没人發現。本文從入口、中轉、深處三個位置拆解常见断点,並给出日誌、Sitemap 與内鏈三份資料的核對方法。

搜尋抓取

抓取路径上的断点:蜘蛛走到一半停下的几種常见原因

蜘蛛抓取站点不是從头到尾掃一遍,而是顺着連結往前走的:從入口頁進入,经過列表頁,再進入詳情頁,遇到新的可抓連結就记下来排队。這條路径上任何一處断掉,後面的頁面就可能長時間没人来。所谓抓取路径断点,就是蜘蛛能走到某一步,却没法繼續往下走的位置。

断点一般出現在三個位置

把站点想成一條鏈:首頁或導航是入口,列表頁與分頁是中轉,詳情頁是深處。抓取量下降,或者新頁面迟迟不出現,多數不是某一個頁面單獨出了問题,而是鏈條中的某一环少了可跟随的連結。

入口层:導航與首頁的出口

首頁和主導航是蜘蛛最常訪問的地方。如果重要栏目只出現在图片、下拉菜單的脚本里,或者放在需要点击才展開的组件中,初始 HTML 里就没有可用的 href。蜘蛛看到的首頁,和你用浏览器看到的首頁,可能不是同一個版本。

中轉层:列表頁與分頁

列表頁承担着把蜘蛛送往詳情頁的任務。分頁如果用的是按钮加脚本、所有頁碼都指向第一頁,或者加载更多只在用戶滚動时触發,蜘蛛就可能只停在第一頁。預設视图里最好保留一组可跟随的分頁連結,並让它排在篩選條件之外。

深處:詳情頁之間的互鏈

詳情頁往往只往回收,不往外發。除了面包屑,相關推荐、上下篇、同标簽聚合都是让蜘蛛繼續走的通道。這些位置的連結數量不必多,但要真實指向可訪問的頁面,而不是空連結,或者參數拼接出来的無效地址。

容易制造断点的几種寫法

  • 列表連結由脚本渲染,初始 HTML 里為空,蜘蛛拿不到 href;
  • 連結用 onclick 或 span 模拟,没有 a 标簽和可解析地址;
  • 分頁與篩選共用一套參數,預設頁之外的 URL 彼此重复或互相覆盖;
  • 頁面返回 200,但正文為空或提示内容不存在,属于软 404;
  • 連結被 nofollow、ugc 等属性标注,蜘蛛不再顺着走;
  • 重要入口藏在多层展開菜單或登入之後。

服務器與狀態碼带来的中断

路径连接得再好,服務器不给响應也没用。5xx、连接超时、响應時間過長,都會让蜘蛛提前結束這一轮,已经排队的 URL 顺延到下次。频繁出現时,先看日誌里同一时段的耗时分布,再判断是带宽、資料库,還是某個動態接口拖慢了整体。

用三份資料交叉核對

  1. 服務器日誌:看蜘蛛實际抓了哪些 URL,重点找列表頁和分頁的訪問记錄;
  2. Sitemap:對照其中提交的 URL,是否有大量地址在日誌里從未出現;
  3. 站内連結:從入口頁出發手動点几层,看能不能走到那些没被抓的頁面。

三者對不上的地方,通常就是断点所在。日誌里反复出現、但内鏈中没有的 URL,多半是 Sitemap 或外部引用带進来的;内鏈能走到、日誌里却没有的,則要怀疑层級太深,或者所在目錄整体抓取較少。

修复的先後顺序

先把入口层和中轉层的連結补成可解析的 a 标簽,再處理詳情頁的横向互鏈,最後清理软 404 和重复參數。服務器层面的問题單獨處理,尽量不要在抓取異常期同时大改内鏈结构,否則很难判断是哪一項起了作用。

抓取路径是排查工具,不是保證收錄的手段。它只能帮你確認蜘蛛有没有机會走到某個頁面,至于最终抓不抓、多久抓一次,仍由搜尋引擎自己决定。