给入口頁加了一批連結,服務器日誌里却没有對應的抓取记錄,或者只有入口頁被反复抓、里面的目标頁一次都没来。這種情况原因通常集中在几個固定环节,按顺序排查比反复改頁面更省事。
先分清是“没發現”還是“發現没抓”
這两種情况處理方式完全不同,判断依據是日誌。
- 没發現:日誌里完全看不到搜尋蜘蛛訪問目标 URL,连一次請求都没有。問题多半出在連結没被解析、入口頁没被抓,或者連結被挡在抓取之前。
- 發現没抓:日誌里能看到目标 URL 的請求,返回 3xx、4xx、5xx,或者蜘蛛很快就走了。問题多在目标頁狀態或抓取节奏上。
要提醒的是,日誌只能說明蜘蛛来過、請求了什么、返回什么狀態,並不能說明 URL 是否被索引。索引狀態要在搜尋控制台里看,两邊資料對不上是正常的。
几個常见的排查方向
入口頁本身有没有被正常抓取
- 入口頁是否長期返回 5xx、经常超时,或者被 CDN 挡在缓存後面
- robots.txt 有没有誤屏蔽入口頁所在目錄
- 入口頁是否被注释或規則限制,導致它自身很难被發現
- 站点是否為新域名、域名是否有過不良歷史
連結是不是真的在初始 HTML 里
- 連結由 JavaScript 在客戶端渲染生成,蜘蛛拿到的是空骨架
- 連結放在 iframe、表單按钮或图片热区里
- 連結被样式隐藏,或放在需要点击展開的区域
這几種寫法並不是完全不能被處理,但被發現的時間會拉長、被跟進的比例會下降。想让结果稳定一些,關键連結尽量寫在初始 HTML 的連結标簽中。
目标頁這一端是否放行
- 目标頁返回 404、410、5xx,或者鏈路里有多层跳轉
- 目标頁目錄被 robots.txt 的 Disallow 屏蔽
- 目标頁带有 noindex、nofollow,或响應头與 meta 里的規則寫法冲突
- 目标頁需要登入、Cookie 或驗證碼才能返回正文
這里有一個容易被混淆的点:robots.txt 的 Disallow 會让抓取請求根本不發出;noindex 是抓取之後才生效,蜘蛛仍然會来訪。两者在日誌里的表現完全不同,不要放在一起判断。
站点整体的抓取額度
同一域名下的入口頁數量突然放大,抓取請求會大量集中到入口頁上,目标頁分到的次數就少了。這種情况在新站或者權重不高的站上比較常见。可以先把入口頁規模收敛,把連結位置和目标頁质量處理好,再观察日誌里目标 URL 的抓取是否慢慢出現。
URL 提交能帮上什么忙
手工提交、sitemap、API 推送的作用是把 URL 送進待抓取队列,属于提示性质,不是保證。当入口頁里的連結被發現得很慢时,可以同时提交入口頁和目标頁,用来對比究竟是哪一端卡住了。
建议的排查顺序
- 確認入口頁本身是否被抓、返回什么狀態碼。
- 取一份入口頁的原始 HTML(不要用浏览器渲染後的结果),確認連結在不在里面。
- 在日誌里搜尋目标 URL,看有没有請求记錄、返回什么狀態。
- 检查目标頁的 robots 規則、noindex、跳轉鏈和响應時間。
- 以上都正常,再去看域名歷史、抓取額度和入口頁規模的問题。
排查期間尽量只改一個變量,改完至少观察几天。同时調整 robots、連結位置和提交方式,最後很难判断是哪一項起了作用。
入口頁只是把地址暴露出来,能不能被跟進、跟進後能不能被處理,取决于目标頁和站点整体狀態。把這几步拆開看,問题通常不难定位。