先分清「抓到了頁面」和「抓到了里面的連結」
日誌里出現入口頁的 200 請求,只能說明蜘蛛拿到了那個頁面,並不代表它把頁面里的連結都放進了抓取队列。這两件事在日誌上的表現完全不同:前者是入口頁自身的請求记錄,後者會在稍後出現目标 URL 的請求记錄。想把問题定位清楚,得從几個能落地的观察点入手。
一、日誌:看請求的是谁、按什么顺序来
日誌是最基础的證據,但要看得有针對性,不能只數抓取次數。
值得關注的几項
- 目标 URL 有没有出現在日誌里,而不是只看入口頁被訪問過几次。
- 時間間隔:入口頁被抓之後多久出現目标 URL 的請求,几小时和几天都是正常范围。
- UA 與来源 IP:用反向查询確認是不是目标搜尋引擎的蜘蛛,UA 可以随便填,IP 归属相對难伪造。
- 返回狀態碼:目标 URL 是 200、301 還是 404,结果差別很大,不能混在一起統計。
二、目标頁侧的證據比入口頁更直接
如果目标頁本身也有訪問日誌,優先看它。入口頁日誌只能證明蜘蛛来過入口頁,目标頁日誌才能證明它顺着連結走過去了。当两邊的時間戳能對上、中間没有其他跳轉环节时,這條鏈路基本可以確認是通的。
反過来,如果入口頁反复被抓、目标頁却從来没有請求记錄,問题多半出在連結本身的寫法上,比如連結只在 JavaScript 渲染後才出現、被 nofollow 标注、指向的地址已经失效,或者目标頁被 robots.txt 挡在抓取之外。
三、抓取频次的變化要拉長時間看
單日的抓取量波動很常见,用一天的資料下结论容易誤判。把窗口拉長到一到四周,观察目标 URL 是否開始被周期性訪問,而不是只来一次。只被抓一次通常說明連結被發現過,但没有形成持續跟進的节奏;周期性出現才說明這一批 URL 進入了正常的抓取循环。
四、几個容易誤判的情况
- 把采集程序、监控探针、安全掃描的請求当成搜尋蜘蛛,這類請求通常频率高、路径杂乱。
- 把 CDN 回源、缓存预热、頁面预取产生的請求算成蜘蛛抓取。
- 入口頁被抓了,但連結是脚本動態插入的,日誌里自然看不到對應的目标 URL 請求。
- 目标 URL 返回 304 或直接跳轉,日誌看起来像「没抓到内容」,其實請求是成功的。
- 入口頁被缓存,蜘蛛拿到的仍是舊版本 HTML,新加的連結根本没出現在返回内容里。
五、一套可以照做的排查顺序
- 先確認入口頁本身是否真的被目标搜尋引擎的蜘蛛抓過,UA 加 IP 反查一起看。
- 查看入口頁返回的初始 HTML 源碼,確認目标連結是不是直接寫在 HTML 里。
- 检查連結是否带 nofollow、是否落在 robots.txt 的 Disallow 范围内。
- 把時間窗拉長到一到四周,看目标 URL 有没有出現請求记錄。
- 如果長期没有動静,換一批入口頁或換一種 URL 提交方式做對照測試,而不是繼續堆量。
抓取是發現,收錄是另一回事。日誌里看不到目标 URL,通常說明 URL 發現环节出了問题;目标 URL 被抓了却迟迟不收錄,問题多半在頁面质量、内容重复或站点整体信号上,跟蜘蛛池本身關系不大。
小结
判断蜘蛛有没有跟進,靠的是日誌、頁面源碼、時間趋势三样東西互相印證,而不是某個工具上顯示的蜘蛛數量。把观察点固定下来,每次調整入口頁或連結寫法时都做一次對照,比反复更換方法要可靠得多。