常见問题

搜尋蜘蛛抓了入口頁却始终没碰目标 URL,日誌里能看出卡在哪一步吗

搜尋蜘蛛抓過蜘蛛池入口頁,日誌里却看不到目标 URL,這種落差很常见。本文按顺序拆解“入口頁被抓”和“目标 URL 被發現”之間的几個断点:連結是否真的輸出在源碼里、robots 與頁面規則、WAF/CDN 拦截、重定向、抓取频次,並给出一個可以自己跑的最小驗證方法,帮助判断問题出在哪一环。

常见問题

搜尋蜘蛛抓了入口頁却始终没碰目标 URL,日誌里能看出卡在哪一步吗

盯服務器訪問日誌的人常常會遇到一種落差:搜尋蜘蛛确實来抓過蜘蛛池入口頁,心里踏實了一点;可過一段時間回头看,目标 URL 在日誌里一次都没出現過。這时候容易直接下结论说“蜘蛛池没用”,其實更常见的情况是鏈路中間某一环断了,只是没被注意到。日誌本身能提供不少线索,關键是知道该按什么顺序去對。

先分清两件事:入口頁被抓好,不等于連結被跟進

日誌里一條针對入口頁的請求,只能說明蜘蛛下载了這個頁面,不能說明它解析了頁面里的連結,更不能說明它把連結放進了待抓队列。想判断連結有没有“被讀到”,至少要看两件事:

  • 目标 URL 是否真的出現在入口頁返回的 HTML 源碼里,而不是只在浏览器渲染之後才出現;
  • 日誌里有没有针對目标 URL 的請求,哪怕是返回 4xx 或 5xx 也算被請求過。

如果源碼里根本没有這條連結,問题在入口頁的生成或輸出环节;如果源碼里有、日誌里却没有,問题更可能出在後續的抓取調度上。

按顺序排查几個常见断点

  1. 連結是否依赖脚本才出現。用“查看網頁源代碼”的方式打開入口頁,而不是只看渲染後的效果。源碼里搜不到目标 URL,說明連結没有被輸出。
  2. 是否被 robots.txt 或頁面級規則挡掉。確認入口頁自身没有被设為不可索引,同时確認目标 URL 所在路径没有被 robots.txt 禁止抓取。
  3. 入口頁是否被 WAF、CDN 或防爬策略拦住。如果日誌里响應碼異常、返回体积明顯偏小,或者只有部分 UA 能拿到完整内容,就要怀疑返回给蜘蛛的内容和返回给浏览器的内容不一致。
  4. 目标 URL 是否發生了重定向。如果目标 URL 做了 301 或 302,日誌里出現的會是跳轉之後的地址,看起来就像“從没被抓過”。
  5. 抓取频次是否本来就低。入口頁被抓的次數很少时,挂在後面的目标 URL 排队更久,短時間内看不到日誌属于正常現象。

做一個最小驗證,比反复猜更快

挑一個入口頁和一條目标 URL,單獨做一次驗證:手動抓取入口頁的原始 HTML,確認連結确實在里面;然後在接下来的一段時間里,只盯這一對 URL 的日誌,把時間、响應碼、抓取 UA 记下来。這样得到的判断比看整体資料可靠得多,也更容易区分是入口頁輸出問题,還是調度問题。

几個容易誤判的地方

  • 只統計了部分日誌文件或部分时段,目标 URL 的請求恰好落在没看的区間里。
  • 日誌按天轮轉後被压缩归档,检索时没有合並,導致结果不完整。
  • 把蜘蛛 UA 当成唯一證據。UA 可以伪造,反過来真實蜘蛛也可能因為缓存、压缩等原因不产生预期日誌。
  • 用第三方工具查询“是否被發現”,這類结果只能当參考,不能当结论。
抓取日誌是排查工具,不是结果指标。它能說明蜘蛛来過,但不能保證目标 URL 會被收錄,也不代表會有排名,這几件事之間没有等号。

鏈路都通了,接下来该看什么

如果入口頁的輸出正常、robots 規則没問题、也没有拦截和重定向,日誌里還能看到目标 URL 被請求過,那入口頁這一环基本可以認為完成了。再往下要關注的是目标 URL 自身的内容质量、可訪問性、是否存在大量重复,以及整站的抓取配額是否够用。把這些不同层面的問题混在一起看,很容易让入口頁背了不该背的责任。