搜尋抓取

内鏈结构里的死胡同:蜘蛛走到頁面尽头之後往哪走

蜘蛛抓取是一條條路径连起来的。如果某個頁面抓到之後没有可繼續跟随的有效連結,這條路径就停在原地。本文梳理死胡同頁的常见形態、给末端頁留出口的几種做法,以及怎么用抽样和日誌判断自己的内鏈是不是把蜘蛛带進了断头路。

搜尋抓取

内鏈结构里的死胡同:蜘蛛走到頁面尽头之後往哪走

蜘蛛在站内的移動方式,本质上是一段一段被連結串起来的行程。它抓到一個 URL,解析頁面,把里面有效的連結放進待抓队列,再去下一個。如果某個頁面抓到之後,頁面里没有可繼續跟随的出鏈,或者出鏈全都指向已经被抓過的同一批地址,這條路径就停住了。這類頁面可以叫抓取上的死胡同。

死胡同本身不代表頁面有問题。很多正常的内容頁确實不需要往外鏈出。但当成片的末端頁都互不连通时,站点的 URL 發現就會越来越依赖 Sitemap 和外部連結,内鏈這條通道等于闲置了。

死胡同常见的几種形態

  • 纯终端詳情頁:頁面只有正文,没有同類入口、没有上一篇下一篇、也没有相關推荐,出鏈為零。
  • 只鏈回首頁:有出鏈,但方向單一。回首頁不算错,只是回到了已知区域,不产生新的 URL 發現。
  • 相關推荐靠脚本生成:HTML 里看不到連結,需要渲染後才出現,蜘蛛在未渲染阶段就等于走到了尽头。
  • 空标簽頁與空聚合頁:标簽頁只有标题没有條目,聚合頁筛完没有结果,頁面照样返回 200,但没有可走的下一跳。
  • 列表頁翻到底:最後一頁之後既没有回到列表首屏的入口,也没有指向其他分類的連結。

“回首頁”為什么不够

蜘蛛没有返回按钮,也不理解導航栏的心理意义。它判断的是這個頁面上有哪些没抓過的 URL 值得排队。首頁通常是全站被訪問最频繁的地址,從末端頁回首頁,只是绕回了一個已经很熟的地方,對扩展覆盖范围帮助有限。

真正有用的出口,是能把蜘蛛引向同一主题下尚未被抓取的其他頁面。也就是说,出口的價值不在于有几個,而在于通向哪里。

给末端頁留出口的几種做法

  1. 同類内容互鏈:詳情頁底部放同分類、同标簽下的其他條目,控制在合理數量,優先選更新或更完整的几條。
  2. 顺序連結:上一篇、下一篇,让同批内容形成一條可以连續走的鏈。
  3. 回到列表並升級:不只是回到本分類列表,還可以给一個上层分類或专题頁入口,把路径往上抬一层再重新分流。
  4. 专题與标簽聚合:把零散内容收進有實际條目的聚合頁,聚合頁再指向具体條目,形成循环而不是單向终点。
  5. Sitemap 兜底:内鏈补不上的孤立 URL,用 Sitemap 保證至少有一條提交路径,但不要把它当成内鏈的替代品。
判断一個頁面是不是死胡同,可以問一句:從這一頁出發,蜘蛛下一步能走到哪個還没抓過的 URL?如果答不上来,它就是末端。

出口別做成陷阱

补出鏈时容易走過头。頁脚铺满全站連結、每個頁面都鏈向所有分類、篩選參數可以组合出成千上萬個地址,這些做法會把抓取配額消耗在低價值地址上,反而挤压了核心内容的抓取机會。

比較稳妥的尺度是:出口與目前頁主题相關,數量可控,連結指向的地址本身有内容、可正常返回。凡是点進去是空列表或者需要登入才能看的,就不要放在出口位置。

怎么自查内鏈有没有断头路

  • 從首頁出發做一次广度優先的連結抽样,记錄哪些頁面只有入鏈没有出鏈。
  • 統計頁面的内鏈入度,長期為零的 URL 基本只能靠 Sitemap 被發現。
  • 翻服務器日誌,看蜘蛛抓到某個頁面之後是否還繼續請求该目錄下的其他地址,長時間没有後續往往說明這里断了。
  • 抽查相關推荐模块,確認在未执行脚本的 HTML 里是否已经有可跟随的連結。

出口再全,也要服務器配合

内鏈把路径铺好只是第一步。如果這些頁面响應時間很長,或者間歇性返回 5xx,蜘蛛在重试几次之後會降低對整站的訪問频率,路径再通也走不動。抓取速率、並發和响應時間之間需要留出余量,尤其是内鏈密集的列表頁和聚合頁。

把内鏈看成路網而不是装饰,末端頁留一两個真正通向新内容的出口,孤立地址用 Sitemap 补上,同时保證服務器能稳定响應。這样蜘蛛的每一次抓取才更可能带来下一個新 URL,而不是停在同一批地址上反复打轉。