常见問题

入口頁有抓取记錄、目标 URL 却没動静,按這個顺序排查

搜尋蜘蛛来抓入口頁,不等于目标 URL 會被發現和抓取。本文把「入口頁被抓 → 連結被解析 → 目标 URL 被抓」拆成三段,從狀態碼、响應体大小、連結是否在服務器返回的 HTML 里,到目标 URL 的 robots 限制、跳轉鏈和抓取节奏,给出一個可以照着走的排查顺序,帮你在日誌里找到真正卡住的那一环。

常见問题

入口頁有抓取记錄、目标 URL 却没動静,按這個顺序排查

入口頁在訪問日誌里出現了搜尋蜘蛛的记錄,确實让人安心,但它只說明门口被敲過,不代表门後的目标 URL 會被發現並抓取。下面按從近到遠的顺序,把常见的卡点逐一排查一遍。

先分清两件事:没被抓,和抓了没用

很多站長把蜘蛛来過入口頁,直接等同于目标 URL 會被收錄。實际上這是三段獨立過程:入口頁被抓取 → 頁面里的連結被解析並加入待抓队列 → 目标 URL 被抓取並進入索引。任何一段断掉,外部看到的現象都是目标 URL 没動静。

第一步:確認入口頁是真的被完整讀取

  • 看狀態碼是不是 200。返回 403、429、5xx 的訪問,蜘蛛大概率什么都没拿到。
  • 看响應体大小。如果抓取记錄顯示只拿到几百字节,可能是被 WAF、驗證頁或預設错誤頁截断了。
  • 看是否被压缩、编碼異常或分块传輸出错,導致解析器讀不出連結。
  • 用自己的浏览器或命令行工具,用同样的路径再請求一次,確認服務端對匿名訪問返回的内容一致。

第二步:確認蜘蛛看到的 HTML 里确實有連結

這一步最容易想当然。你在浏览器里看到的連結,不一定是服務器直接返回给你的那份 HTML 里的連結。

  • 用查看源代碼而不是開發者工具的元素面板,搜尋目标 URL 的特征片段。
  • 如果連結只存在于 JavaScript 渲染後的 DOM 里,就需要评估搜尋蜘蛛是否执行脚本、执行是否稳定。
  • 如果連結被 CSS 隐藏、塞在注释里、或寫在脚本字符串里,命中概率會明顯不同。
  • 如果入口頁對不同 UA 輸出不同内容,要用蜘蛛的 UA 實际請求一遍,看返回结果。

第三步:確認目标 URL 自身可抓

  • 目标站点的 robots.txt 是否屏蔽了對應路径。
  • 目标站点是否對蜘蛛 UA 或常见抓取 IP 段返回 403 或驗證碼。
  • DNS 解析、TLS 證书、重定向鏈是否正常,有没有形成循环跳轉。
  • 目标 URL 是否只對特定地区或登入狀態開放,公開抓取时拿到的是空頁或错誤頁。

第四步:確認連結指向的地址足够干净

入口頁里的連結如果经過多层跳轉、带一長串參數,或者每次訪問拼出来的地址都不一样,蜘蛛解析到的 URL 可能和你的预期不一致,也容易被当成重复地址處理。

  • 跳轉鏈尽量短,最终地址最好直接寫在連結属性里。
  • 去掉只用于統計的參數,保留真正影响内容的參數。
  • 同一個内容尽量只暴露一個規范地址,避免同一頁面對應几十個變体。

第五步:看抓取节奏,別用小时級的耐心下结论

蜘蛛對新入口頁的抓取往往分批次進行,間隔几天甚至更長都算正常。观察时建议按天統計入口頁的訪問次數、返回碼分布,以及目标 URL 首次出現的時間,而不是盯着一两個小时就判断蜘蛛不来。

第六步:把提交手段当作补充而不是依赖

站点地图和主動提交可以帮蜘蛛更快知道連結存在,但它們不能替你把連結寫進可解析的 HTML 里。如果前面几步就有問题,提交只會让蜘蛛反复撞上同一個坑。

每一步的结论都要有日誌或抓取记錄支撑。凭感觉判断蜘蛛不来,常常會把問题查到错誤的方向上,改来改去反而把原本正常的入口頁改坏了。

一份可以照着走的最小清單

  1. 入口頁:狀態碼、响應体大小、匿名訪問内容是否一致。
  2. 連結:是否出現在服務器返回的 HTML 源碼中,是否可被解析。
  3. 目标 URL:robots 限制、狀態碼、跳轉鏈、參數與規范化。
  4. 节奏:按天統計抓取與首次出現時間,给足一個完整观察周期。

按這個顺序走一遍,通常能定位到具体是哪一段出了問题。真正需要調整的往往只有一两個点,改完再观察一個完整的抓取周期,比反复折腾入口頁结构更有意义。