做蜘蛛池或站点运营时,最常见的困惑是:入口頁明明有抓取,為什么目标 URL 一点動静都没有?凭感觉判断很容易走偏,比較稳妥的办法是回到服務器訪問日誌和後台抓取資料,用几個可核對的信号来判断“發現”這件事到底有没有發生。
一、先区分几種“看起来像抓取”的记錄
日誌里出現搜尋引擎 UA,並不等于目标 URL 被發現。至少有三種情况需要分開看:
- 只抓了入口頁:记錄里只有入口頁 URL,没有目标 URL,說明發現环节可能没完成。
- 抓了目标 URL 但没索引:這是抓取與收錄之間的差距,属于另一個排查方向。
- 第三方爬虫冒充:UA 可以伪造,最好用反向 DNS 或官方 IP 段核對来源。
二、判断目标 URL 是否被發現的三個信号
信号一:目标連結确實出現在被抓取的入口頁 HTML 里
先確認搜尋蜘蛛拿到的版本里有没有這個連結。可以带 UA 請求入口頁,直接检查返回的 HTML 源碼;如果連結是 JavaScript 渲染後才插入的,源碼里看不到,被發現的可能性就會明顯下降。
信号二:目标 URL 的抓取记錄里出現入口頁作為来源
目标 URL 一旦被抓,日誌里通常能看到請求。此时可以结合 Referer 字段判断它是不是沿着入口頁的連結過来的。Referer 缺失不代表没被發現,但 Referer 指向入口頁是相對明确的證據。
信号三:抓取之後有回訪
第一次抓取之後,如果目标 URL 在几天或几周内出現第二次、第三次抓取,說明這個地址已经進入常規抓取队列。只抓一次、之後再無動静,往往和内容质量、站点整体信任度或抓取预算分配有關。
三、日誌里看不到目标 URL 时,按顺序排查
- 確認入口頁本身可抓:狀態碼 200,没有被 robots.txt 拦截。
- 確認連結是标准 a 标簽,href 可解析,没有被 nofollow、onclick 或框架脚本吞掉。
- 確認目标 URL 自身可訪問,返回 200,且没有被 robots.txt、登入墙或地域限制挡住。
- 確認入口頁本身有稳定抓取频次,長期零抓取的入口頁带不出新連結。
- 確認站点没有大面积重复内容、软 404 或其他拖累抓取效率的問题。
四、几個容易誤判的点
- 把後台“已發現未编入索引”当成没發現。它其實說明 URL 已经被發現,只是還没走到收錄那一步。
- 只看一天日誌就下结论。抓取有延迟,观察周期至少放到一到两周。
- 把別的爬虫记錄当成搜尋蜘蛛。UA 匹配之外,最好再核對 IP 归属。
五、记錄與复盘
建议给每個入口頁和目标 URL 建一份简單台帳:入口頁地址、目标地址、首次出現抓取的時間、抓取次數、返回狀態碼。连續记錄两三周,就能看出問题出在發現环节還是抓取之後的环节,避免反复調整却不知道哪一步起了作用。
日誌只能告诉你搜尋蜘蛛做過什么,不能保證它接下来會做什么。能做的是把可訪問性、連結结构、内容质量這些基础項做好,剩下的交给時間。