搜尋抓取

蜘蛛没跟進的連結:從抓取日誌排查 URL 發現断点

抓取日誌里常看到列表頁被反复訪問,詳情頁却很少出現。這通常不是蜘蛛偷懒,而是 URL 發現路径有断点。本文從連結可见性、nofollow 與 robots、分頁參數、内鏈深度和服務器响應几個方面,给出排查顺序和改善思路,帮助站点让重要 URL 更容易被蜘蛛跟進。

搜尋抓取

蜘蛛没跟進的連結:從抓取日誌排查 URL 發現断点

抓取日誌里有一種常见現象:列表頁、频道頁被反复訪問,但詳情頁的抓取记錄很少。遇到這種情况,先別急着归因于蜘蛛偷懒或抓取预算不足,更可能是 URL 發現路径上有断点。蜘蛛要先在已抓取的頁面里看到連結,才會把新 URL 加入待抓队列。連結没出現,或者出現了但被阻止跟進,後續抓取就無從谈起。

先確認蜘蛛是否真的看到了連結

打開一個被频繁抓取的列表頁,查看服務器返回的原始 HTML,而不是浏览器渲染後的效果。如果連結只存在于 JavaScript 渲染结果里,或者被放在 iframe、需要点击按钮才展開的内容中,蜘蛛在初次抓取时可能看不到。

  • 連結由前端脚本异步插入,原始 HTML 中没有 href。
  • 連結放在图片、CSS 背景或表單里,没有可抓取的锚文本。
  • 連結需要登入、選擇地区或關閉彈窗後才出現。
  • 列表頁本身返回 200,但正文為空或只有加载骨架。

這些情况下,蜘蛛即使抓了列表頁,也拿不到下一步的 URL。比較稳妥的做法,是把重要入口連結直接寫進 HTML,至少在首屏或分頁導航中保留一份可抓取版本。

連結可见但没被跟進

nofollow 與 robots 的配合

内鏈上的 nofollow 會提示蜘蛛不必跟進,robots.txt 則可以直接禁止抓取某類路径。两者目的不同:前者影响連結權重和跟進意愿,後者影响抓取權限。如果重要詳情頁的入口連結被加了 nofollow,或者所在目錄被 robots 屏蔽,蜘蛛可能長期不訪問。检查时把這两個設定分開看,不要混為一谈。

分頁與篩選參數的干扰

分頁、排序、篩選參數很容易生成大量相似 URL。蜘蛛可能在參數组合里来回抓取,消耗掉本可以用于詳情頁的抓取频次。建议限制可抓取的分頁范围,對無實质内容的參數頁做規范化或屏蔽,同时确保詳情頁連結在分頁中稳定出現。

連結深度與内鏈结构

從首頁到詳情頁的点击深度越深,蜘蛛發現 URL 的路径就越長。Sitemap 能补充一批 URL,但它更像提交清單,不能完全替代内鏈的引導作用。把重要栏目放在導航或正文相關推荐中,让詳情頁有多個入口,比只依赖深层分頁更可靠。

服務器與抓取节奏的影响

服務器响應慢、频繁超时或返回 5xx,會让蜘蛛在抓取中途降低频率甚至暫停。後續連結即使存在,也可能因為抓取中断而没被跟進。排查时關注日誌中的狀態碼分布、响應時間和重定向鏈長度。

  • 大量 5xx 或超时:先检查服務器负载、資料库查询和 CDN 回源。
  • 重定向鏈過長:合並跳轉,减少蜘蛛到達内容前的等待。
  • WAF 或 CDN 誤拦:確認蜘蛛 IP 段是否被拦截,观察 403、429 的比例。

一個可执行的排查顺序

  1. 在抓取日誌中搜尋目标詳情頁 URL,確認蜘蛛是否出現過。
  2. 查看列表頁原始 HTML,確認詳情連結是否可被抓取。
  3. 检查 robots.txt、meta robots 和 nofollow,排除主動阻止。
  4. 检查分頁和篩選參數,减少低價值 URL 對抓取频次的占用。
  5. 检查服務器狀態碼、响應時間和重定向,排除抓取中断。
  6. 补内鏈、更新 Sitemap,並持續观察日誌變化。

改善 URL 發現的几個习惯

  • 重要連結用标准 a 标簽和可讀锚文本,放在 HTML 中。
  • 保持栏目层級清晰,避免詳情頁只靠一條深层路径進入。
  • 控制分頁數量,對無内容參數頁做收敛處理。
  • Sitemap 及时更新,但不要把它当作唯一發現渠道。
  • 服務器保持稳定,减少蜘蛛抓取时的等待和失敗。
抓取是發現與調度共同作用的结果。連結可见、路径通畅、响應稳定,蜘蛛才更有可能顺着入口走到詳情頁。

如果你發現蜘蛛長期只抓列表頁,不妨從日誌倒推:它看到了什么、被什么挡住、在哪里中断。小步調整内鏈和服務器配置,再观察後續抓取记錄,通常比一次性大改更容易定位問题。