多數抓取異常不是蜘蛛不来,而是它在路上某一环走不通。盯着抓取量曲线猜原因效率很低,更直接的办法是按蜘蛛的路径把關键环节亲自走一遍:入口能不能進、連結能不能讀、頁面能不能抓、路径是否合理、清單是否對得上。下面這套自查流程只用浏览器、命令行和現有工具就能完成。
一、先確認入口:蜘蛛從哪進,進得来吗
蜘蛛的第一段路通常落在 robots.txt、首頁和 Sitemap。先確認這三處都能正常返回:robots.txt 是 200 而不是 404,也没有誤寫成禁止全站抓取;首頁返回 200 而不是長時間的 5xx 或跳轉循环;Sitemap 地址在 robots.txt 里声明且能打開。
接着看域名版本是否统一。http 與 https、www 與非 www、带斜杠與不带斜杠,如果各自返回 200 内容,蜘蛛會把它們当成不同入口,抓取和權重都被分散。理想狀態是只有一個主版本直接返回内容,其余用 301 收拢。
二、HTML 里的連結:能被提取出来吗
蜘蛛拿到 HTML 後要從中抽連結,這一步最常见的断点是連結並不在 HTML 里,而是靠脚本拼接、点击事件或表單跳轉生成。自查时可以關掉 JavaScript 看一遍首頁和主要栏目頁,站内連結還剩多少。
- 列表頁、導航、面包屑是否使用标准 a 标簽加 href,而不是 div 加 onclick。
- href 是完整可解析的路径,不是 javascript:void(0) 之類的占位。
- nofollow 的使用范围是否過宽,把正常内容頁也挡在外面。
- 分頁、篩選、翻頁連結是否為真實連結,還是無限加载後再补一個不可点的按钮。
三、目标 URL 的响應:狀態碼與可抓标记
從入口挑几十條代表性 URL,逐條確認:返回 200;不是 301 到 302 再到 200 的長跳轉鏈;不會因為 UA 或地域返回 403;不是内容已空但狀態碼仍是 200 的软 404。
再看頁面級別的可抓标记。meta robots 或 X-Robots-Tag 是否寫着 noindex、nofollow;canonical 是否指向另一個地址。這些不影响抓取,但會影响复查與索引的判断,值得顺手记錄下来。
内鏈指向一個被 robots.txt 禁止的地址,等于把蜘蛛引到门口再让它掉头,這類浪費在日誌里通常表現為大量 403 或极低的抓取深度。
四、抓取路径:跳數與重复
抓取路径的理想形態是短而清晰。常见的核心頁(詳情、商品、文章)尽量控制在三跳以内:首頁到栏目,栏目到列表,列表到内容。如果某批頁面只能從很深的归档或标簽頁進入,它們的發現速度會明顯落後。
另一種浪費是同一内容出現多套地址。带參數、带排序、带會话 ID 的版本如果都可訪問且没有 canonical 指向,蜘蛛會把額度分给這些副本。自查时可以把頁面上的連結去重,看有多少條最终指向同一内容。
五、Sitemap 與内鏈是否互相印證
两處清單對不上时,抓取节奏就會變得难以预期。只寫在 Sitemap 里、站内没有任何内鏈的 URL,發現概率偏低;只在很深的内鏈里出現、Sitemap 又没收錄的 URL,抓取频率也不受控。較稳妥的做法是让重要頁面同时出現在内鏈和 Sitemap 中,並保持 lastmod 與頁面實际更新時間大致一致。
六、把自查做成例行检查
不需要每天都做,但在這些节点值得完整走一遍:站点改版、上线新频道或批量新頁面、更換服務器或 CDN、調整 robots.txt 之後。把每次的结果记下来——入口狀態、代表性 URL 的狀態碼、Sitemap 條數、主要路径跳數——再與服務器日誌中的蜘蛛訪問记錄對照,異常通常會比曲线更早暴露出来。