不少人在做 URL 發現时都會遇到這種情况:日誌里能看到搜尋蜘蛛抓了入口頁,但頁面上挂着的目标 URL 過了很久還是没人来。很多时候不是入口頁出了問题,而是“發現”和“抓取”本来就是两個不同阶段的事情。
發現不等于抓取,中間隔着一條队列
搜尋蜘蛛處理一個入口頁时,大致分三步:先把頁面抓下来,再解析出里面的連結,最後把這些連結放進待抓队列。前两步做完,連結算是“被發現”了,但什么时候真正去抓,取决于搜尋引擎自己的調度。目标 URL 迟迟不来,通常就是卡在第三步。
入口頁被抓取,只能說明里面的連結有机會進入待抓队列,並不代表它一定會被尽快抓取。
抓取配額:站点級別的總量限制
搜尋引擎不會無限制地抓某個站点或域名,它會根據歷史表現给出一個大致合理的抓取量,也就是常说的抓取配額。配額不是固定的,會随站点狀態上下浮動。
- 响應速度與稳定性:入口頁域名長期响應慢、频繁返回 5xx,蜘蛛會主動降低抓取频率。
- 内容價值與更新频率:頁面長期重复、内容稀薄,抓取優先級會被压低。
- 抓取出错率:大量 404、跳轉鏈、超时,會消耗掉本就不多的配額。
- 域名歷史:新域名或歷史表現較差的域名,初始配額通常更小。
優先級:同一頁里的連結並不平等
同一頁里的連結進入队列後,處理顺序也有差別。下面這些位置通常更容易被優先安排:
- 出現在首屏正文区域、离主内容較近的連結;
- 有實际锚文本、语义清晰的連結;
- 在站点结构里层級較浅、点击次數少的連結;
- 在多個頁面重复出現的連結。
反過来,頁脚里堆上百條連結、正文之外生硬拼出来的連結块,被處理的顺序往往會靠後很多。
目标 URL 自身的條件也會拖後腿
- 响應時間過長,蜘蛛抓取中途可能放弃;
- 跳轉层級過多,鏈路越長越容易被降級;
- URL 參數繁杂、與站内其他 URL 高度相似,可能被当作重复内容合並;
- 返回非 200 狀態碼,或需要登入、携带 Cookie 才能訪問;
- 被 robots.txt 或頁面級指令限制抓取。
實际能做的事情
- 先修稳定性:让入口頁和目标頁的响應時間可控,减少 5xx 和超时。
- 控制單頁連結數量:一個入口頁放几十條相關度高的連結,比硬塞上千條更容易被有效處理。
- 分散来源:把同一個目标 URL 分布到不同入口頁、不同域名,而不是全部集中在一頁。
- 用 sitemap 做辅助:站点地图能帮助搜尋引擎更快知道 URL 的存在,但替代不了連結發現。
- 看日誌而不是凭感觉:對比蜘蛛抓取入口頁和目标 URL 的時間差,判断瓶颈落在哪一环。
- 给足時間:新連結從被發現到被抓取,間隔從几小时到數周都出現過,属于正常波動。
小结
入口頁被抓、目标 URL 没被抓好,绝大多數时候是配額和優先級的問题,而不是某一行代碼寫错了。把服務器稳定性、入口頁的連結结构、連結本身的质量這几件事做好,URL 被發現並進入抓取流程的概率才會稳步提升。這個過程没有捷径,也不存在一提交就會被收錄的保證。