不少站点在搜尋後台或日誌里看到“已發現但未抓取”“抓取異常”,第一反應是去改 Sitemap,但問题往往不在 Sitemap,而在蜘蛛從入口走到正文這條路径的某個环节断了。把這條路径拆開,逐段排查,比反复提交 URL 更有效。
一條抓取路径上通常有五個节点
從發現到讀到正文,大致會经過:發現来源(Sitemap、内鏈、外鏈、日誌回捞)、抓取队列排队、DNS 與 TCP 连接、HTTP 响應與响應头、HTML 解析與正文提取。任何一個节点出問题,最终表現都可能是“頁面没被抓”或“抓了但没被收錄”,所以要先定位卡在哪一段,再决定改什么。
常见断点與表現
1. 發現断点:URL 進了队列,但入口本身是坏的
内鏈指向 404、指向重定向鏈的中間地址、指向被 robots.txt 屏蔽的路径,都會让蜘蛛走到一半停下。尤其是導航和列表頁里的連結,如果靠 JS 跳轉或 onclick 触發,蜘蛛拿不到 href,等于没有入口。
2. 响應断点:狀態碼和内容對不上
返回 200 却是空内容、返回 302 跳到無關頁面、返回 503 又不给 Retry-After,都會让蜘蛛對這條路径的信任度下降。狀態碼應当如實反映资源是否存在,不要用 200 掩盖错誤頁。
3. 渲染断点:正文在 HTML 里看不到
正文依赖前端接口异步渲染,或者首屏内容要等很久才出現,抓取成本會明顯變高。至少在服務端輸出标题、正文主体和主要内鏈,保證不执行 JS 也能讀到核心内容。
4. 路径断点:内鏈把路径和權重都打散
篩選、排序、分頁參數會生成大量近似 URL,如果内鏈全都指過去,蜘蛛容易在參數空間里兜圈子。可以用 canonical、robots.txt 或連結規則收口,让主要路径保持稳定。
用日誌把断点定位出来
- 確認蜘蛛是否来過:按 UA 與 IP 段過滤服務器日誌,看目标 URL 有没有請求记錄。
- 看狀態碼分布:把 3xx、4xx、5xx 單獨統計,判断是路径問题還是服務器問题。
- 看响應時間:同一批 URL 中响應明顯偏慢的,往往是資料库或接口瓶颈。
- 回溯入口:结合 referer 或抓取時間顺序,找到蜘蛛是從哪個頁面走到這個 URL 的。
修复的優先顺序
- 先修服務器稳定性:5xx 和超时影响面最大。
- 再修狀態碼语义:404、301、410 各归其位。
- 然後收内鏈:保證主要頁面能從首頁在三次点击内到達。
- 最後才是 Sitemap 與主動提交,作為补充而非主力。
排查顺序應当是“先看路径通不通,再看内容有没有”,顺序反了容易做無用功。站点改版或迁移之後,尤其要重新走一遍這條路径。
抓取路径的稳定,最终取决于两件事:入口是否清晰,服務器是否可靠。把這两件事做扎實,大多數“蜘蛛不来”的問题會自然减少;至于收錄和排名,仍由内容质量與竞争环境决定,不是靠抓取優化能承诺的。